Files
2024-09-28 14:24:04 +08:00

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