31#define EMAC_PHY_ADDR 1UL
32#define EMAC_RX_DESC_SIZE 4UL
33#define EMAC_TX_DESC_SIZE 4UL
34#define EMAC_CAMENTRY_NB 16UL
35#define EMAC_MAX_PKT_SIZE 1524UL
37#define EMAC_LINK_DOWN 0UL
38#define EMAC_LINK_100F 1UL
39#define EMAC_LINK_100H 2UL
40#define EMAC_LINK_10F 3UL
41#define EMAC_LINK_10H 4UL
43#define EMAC_TIMEOUT_ERR (-1L)
44#define EMAC_BUS_ERR (-2L)
61#define EMAC_ENABLE_TX() (EMAC->CTL |= EMAC_CTL_TXON_Msk)
70#define EMAC_ENABLE_RX() do{EMAC->CTL |= EMAC_CTL_RXON_Msk; EMAC->RXST = 0;}while(0)
78#define EMAC_DISABLE_TX() (EMAC->CTL &= ~EMAC_CTL_TXON_Msk)
87#define EMAC_DISABLE_RX() (EMAC->CTL &= ~EMAC_CTL_RXON_Msk)
95#define EMAC_ENABLE_MAGIC_PKT_WAKEUP() (EMAC->CTL |= EMAC_CTL_WOLEN_Msk)
103#define EMAC_DISABLE_MAGIC_PKT_WAKEUP() (EMAC->CTL &= ~EMAC_CTL_WOLEN_Msk)
111#define EMAC_ENABLE_RECV_BCASTPKT() (EMAC->CAMCTL |= EMAC_CAMCTL_ABP_Msk)
119#define EMAC_DISABLE_RECV_BCASTPKT() (EMAC->CAMCTL &= ~EMAC_CAMCTL_ABP_Msk)
127#define EMAC_ENABLE_RECV_MCASTPKT() (EMAC->CAMCTL |= EMAC_CAMCTL_AMP_Msk)
135#define EMAC_DISABLE_RECV_MCASTPKT() (EMAC->CAMCTL &= ~EMAC_CAMCTL_AMP_Msk)
145#define EMAC_GET_ALARM_FLAG() (EMAC->INTSTS & EMAC_INTSTS_TSALMIF_Msk ? 1 : 0)
153#define EMAC_CLR_ALARM_FLAG() (EMAC->INTSTS = EMAC_INTSTS_TSALMIF_Msk)
160#define EMAC_TRIGGER_RX() do{EMAC->RXST = 0UL;}while(0)
167#define EMAC_TRIGGER_TX() do{EMAC->TXST = 0UL;}while(0)
204#define EMAC_ENABLE_INT(emac, u32eIntSel) ((emac)->INTEN |= (u32eIntSel))
241#define EMAC_DISABLE_INT(emac, u32eIntSel) ((emac)->INTEN &= ~ (u32eIntSel))
278#define EMAC_GET_INT_FLAG(emac, u32eIntTypeFlag) (((emac)->INTSTS & (u32eIntTypeFlag))?1:0)
316#define EMAC_CLEAR_INT_FLAG(emac, u32eIntTypeFlag) ((emac)->INTSTS |= (u32eIntTypeFlag))
324uint32_t
EMAC_RecvPkt(uint8_t *pu8Data, uint32_t *pu32Size);
325uint32_t
EMAC_RecvPktTS(uint8_t *pu8Data, uint32_t *pu32Size, uint32_t *pu32Sec, uint32_t *pu32Nsec);
328uint32_t
EMAC_SendPkt(uint8_t *pu8Data, uint32_t u32Size);
334void EMAC_GetTime(uint32_t *pu32Sec, uint32_t *pu32Nsec);
336void EMAC_UpdateTime(uint32_t u32Neg, uint32_t u32Sec, uint32_t u32Nsec);
int32_t g_EMAC_i32ErrCode
uint32_t EMAC_CheckLinkStatus(void)
Check Ethernet link status.
void EMAC_SetTime(uint32_t u32Sec, uint32_t u32Nsec)
Set current time stamp.
uint32_t EMAC_GetAvailRXBufSize(void)
Get data length of avaiable RX buffer.
void EMAC_DisableTS(void)
Disable IEEE1588 time stamp function.
void EMAC_DisableAlarm(void)
Disable alarm function.
uint32_t EMAC_SendPktDoneTS(uint32_t *pu32Sec, uint32_t *pu32Nsec)
Clean up process after a packet is sent, and get the time stamp while packet is sent.
uint8_t * EMAC_ClaimFreeTXBuf(void)
Get avaiable TX buffer address.
void EMAC_RecvPktDoneWoRxTrigger(void)
Clean up process after a packet is received.
void EMAC_RecvPktDone(void)
Clean up process after a packet is received.
void EMAC_DisableCamEntry(uint32_t u32Entry)
Disable a specified CAM entry.
uint32_t EMAC_SendPktDone(void)
Clean up process after packet(s) are sent.
void EMAC_SetMacAddr(uint8_t *pu8MacAddr)
Set the device MAC address.
uint32_t EMAC_RecvPktTS(uint8_t *pu8Data, uint32_t *pu32Size, uint32_t *pu32Sec, uint32_t *pu32Nsec)
Receive an Ethernet packet and the time stamp while it's received.
int32_t EMAC_PhyInit(void)
void EMAC_Open(uint8_t *pu8MacAddr)
Initialize EMAC interface, including descriptors, MAC address, and PHY.
void EMAC_GetTime(uint32_t *pu32Sec, uint32_t *pu32Nsec)
Get current time stamp.
uint32_t EMAC_RecvPkt(uint8_t *pu8Data, uint32_t *pu32Size)
Receive an Ethernet packet.
uint32_t EMAC_SendPkt(uint8_t *pu8Data, uint32_t u32Size)
Send an Ethernet packet.
int32_t EMAC_FillCamEntry(uint8_t pu8MacAddr[])
Fill a MAC address to list and enable.
void EMAC_EnableCamEntry(uint32_t u32Entry, uint8_t pu8MacAddr[])
Fill a CAM entry for MAC address comparison.
void EMAC_UpdateTime(uint32_t u32Neg, uint32_t u32Sec, uint32_t u32Nsec)
Add a offset to current time.
void EMAC_EnableAlarm(uint32_t u32Sec, uint32_t u32Nsec)
Enable alarm function and set alarm time.
int32_t EMAC_Close(void)
This function stop all receive and transmit activity and disable MAC interface.
void EMAC_EnableTS(uint32_t u32Sec, uint32_t u32Nsec)
Enable IEEE1588 time stamp function and set current time.
uint32_t EMAC_SendPktWoCopy(uint32_t u32Size)
Send an Ethernet packet.