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_ */
							 | 
						||
| 
								 | 
							
								
							 |