120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /****************************************************************************
 | ||
|  | 
 | ||
|  | Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. | ||
|  | 
 | ||
|  | This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT | ||
|  | be copied by any method or incorporated into another program without | ||
|  | the express written consent of Aerospace C.Power. This Information or any portion | ||
|  | thereof remains the property of Aerospace C.Power. The Information contained herein | ||
|  | is believed to be accurate and Aerospace C.Power assumes no responsibility or | ||
|  | liability for its use in any way and conveys no license or title under | ||
|  | any patent or copyright and makes no representation or warranty that this | ||
|  | Information is free from patent or copyright infringement. | ||
|  | 
 | ||
|  | ****************************************************************************/ | ||
|  | 
 | ||
|  | #ifndef _VP_ETH_H_
 | ||
|  | #define _VP_ETH_H_
 | ||
|  | 
 | ||
|  | #include "os_types.h"
 | ||
|  | #include "vc_task.h"
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_id_e - List of virtual eth ports. | ||
|  |  * VP_ETH_PORTID0 - VC_CHNID_3 (ECM0) | ||
|  |  */ | ||
|  | typedef enum _virtual_port_eth_id_e_ { | ||
|  |     VP_ETH_PORTID0  = 0, | ||
|  |     VP_ETH_PORTID_MAX | ||
|  | } vp_eth_id_e; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_port_valid - Check if port is valid. | ||
|  |  */ | ||
|  | #define vp_eth_port_valid(port) \
 | ||
|  |     ((port) == VP_ETH_PORTID0) | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_channel_valid - Check if channel is valid. | ||
|  |  */ | ||
|  | #define vp_eth_channel_valid(channel)   \
 | ||
|  |     ((channel) == VC_CHNID_3) | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_port_to_channel - Convert the port number to channel number. | ||
|  |  */ | ||
|  | #define vp_eth_port_to_channel(port)   \
 | ||
|  |     ((port) == VP_ETH_PORTID0 ? VC_CHNID_3 : VC_CHNID_3) | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_channel_to_port - Convert the channel number to port number. | ||
|  |  */ | ||
|  | #define vp_eth_channel_to_port(channel)    \
 | ||
|  |     ((channel) == VC_CHNID_3 : VP_ETH_PORTID0 : VP_ETH_PORTID0) | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_filter_e - List the filter mode of virtual eth ports. | ||
|  |  */ | ||
|  | typedef enum _virtual_port_eth_packet_filter_e_ { | ||
|  |     VP_ETH_FT_UNICAST       = 1, | ||
|  |     VP_ETH_FT_BROADCAST     = 2, | ||
|  |     VP_ETH_FT_MULTICAST     = 4, | ||
|  |     VP_ETH_FT_PROMISCUOUS   = 8 | ||
|  | } vp_eth_filter_e; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_rcv_func - Function pointer to get received data. | ||
|  |  * @param p_buf: Pointer of a buffer holding receved data. | ||
|  |  * @param len: Length of buffer. | ||
|  |  * @return Bytes of data that confirmed by this function. | ||
|  |  */ | ||
|  | typedef uint32_t (*vp_eth_rcv_func)(vp_eth_id_e port, uint8_t *p_buf, uint32_t len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_open - Open a virtual uart port. | ||
|  |  * @param port: Virtual eth port to open. | ||
|  |  * @param p_func: Function pointer to receive data. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | uint32_t vp_eth_open(vp_eth_id_e port, vp_eth_rcv_func p_func); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_send - Send data to the virtual eth port. | ||
|  |  * @param port: Virtual eth port to send data. | ||
|  |  * @param p_buf: Pointer of a buffer holding data to send. | ||
|  |  * @param len: Length of buffer. | ||
|  |  * @return Bytes of data that sent. | ||
|  |  */ | ||
|  | uint32_t vp_eth_send(vp_eth_id_e port, uint8_t *p_buf, uint32_t len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_set_mac - Set mac address of this port. | ||
|  |  * @param port: Virtual eth port to set mac address. | ||
|  |  * @param p_mac: Six bytes of mac address to set. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | uint32_t vp_eth_set_mac(vp_eth_id_e port, uint8_t* p_mac); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_set_mac - Set mac address of this port. | ||
|  |  * @param port: Virtual eth port to reset filter. | ||
|  |  * @param filter: Bitmap of filter. Unicast and broadcast enabled by default. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | uint32_t vp_eth_set_filter(vp_eth_id_e port, uint32_t filter); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief vp_eth_set_linkup - Set linkup of this port. | ||
|  |  * @param port: Virtual eth port to set linkup. | ||
|  |  * @param linkup: 0 - shutdown this port, else - linkup this port. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | uint32_t vp_eth_set_linkup(vp_eth_id_e port, uint32_t linkup); | ||
|  | 
 | ||
|  | #endif /* _VP_ETH_H_ */
 | ||
|  | 
 |