📄 net_nic.h
字号:
#define PP_BufEvent_SWInt 0x0040
#define PP_BufEvent_Rdy4Tx 0x0100
#define PP_BufEvent_TxUnder 0x0200
#define PP_BufEvent_RxMiss 0x0400
#define PP_LineStat 0x0134 /* Line status */
#define PP_LineStat_LinkOK 0x0080 /* Line is connected and working */
#define PP_LineStat_AUI 0x0100 /* Connected via AUI */
#define PP_LineStat_10BT 0x0200 /* Connected via twisted pair */
#define PP_LineStat_Polarity 0x1000 /* Line polarity OK (10BT only) */
#define PP_LineStat_CRS 0x4000 /* Frame being received */
#define PP_SelfStat 0x0136 /* Chip status */
#define PP_SelfStat_InitD 0x0080 /* Chip initialization complete */
#define PP_SelfStat_SIBSY 0x0100 /* EEPROM is busy */
#define PP_SelfStat_EEPROM 0x0200 /* EEPROM present */
#define PP_SelfStat_EEPROM_OK 0x0400 /* EEPROM checks out */
#define PP_SelfStat_ELPresent 0x0800 /* External address latch logic available */
#define PP_SelfStat_EEsize 0x1000 /* Size of EEPROM */
#define PP_BusStat 0x0138 /* Bus status */
#define PP_BusStat_TxBid 0x0080 /* Tx error */
#define PP_BusStat_TxRDY 0x0100 /* Ready for Tx data */
#define PP_LAF 0x0150 /* Logical address filter (6 bytes) */
#define PP_IA 0x0158 /* Individual address (MAC) */
#define PP_Rx_LENGTH 0x0402 /* Receive length, in bytes */
/*
*********************************************************************************************************
* NIC DRIVER LAYER / ETHERNET ERROR CODES
*
* Note(s) : (1) ALL NIC-independent error codes #define'd in 'net_err.h';
* ALL CS8900A-specific error codes #define'd in this 'net_nic.h'.
*
* (2) Network error code '10,000' series reserved for NIC drivers.
*********************************************************************************************************
*/
#define CS8900_ERR_RX_BUSY 10700
#define CS8900_ERR_TX_BUSY 10701
/*
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*/
NET_NIC_EXT CPU_BOOLEAN NetNIC_ConnStatus; /* NIC's connection status : DEF_ON/DEF_OFF. */
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED) /* -------------------- NET DRV STATS ------------------- */
NET_NIC_EXT NET_CTR NetNIC_StatRxPktCtr;
NET_NIC_EXT NET_CTR NetNIC_StatTxPktCtr;
#endif
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED) /* -------------------- NET DRV ERRS -------------------- */
NET_NIC_EXT NET_CTR NetNIC_ErrRxPktDiscardedCtr;
NET_NIC_EXT NET_CTR NetNIC_ErrTxPktDiscardedCtr;
#endif
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
void NetNIC_Init (NET_ERR *perr);
void NetNIC_IntEn (NET_ERR *perr);
void NetNIC_MAC_AddrSet (CPU_INT08U *paddr, NET_ERR *perr);
/* -------------------- STATUS FNCTS -------------------- */
CPU_BOOLEAN NetNIC_ConnStatusGet (void);
void NetNIC_ISR_Handler (void); /* Decode & handle rx/tx ISRs. */
/* ---------------------- RX FNCTS ---------------------- */
CPU_INT16U NetNIC_RxPktGetSize (void); /* Get NIC rx pkt size. */
void NetNIC_RxPkt (void *ppkt, /* Rx pkt from NIC. */
CPU_INT16U size,
NET_ERR *perr);
void NetNIC_RxPktDiscard (CPU_INT16U size, /* Discard rx pkt in NIC. */
NET_ERR *perr);
/* ---------------------- TX FNCTS ---------------------- */
void NetNIC_TxPkt (void *ppkt,
CPU_INT16U size,
NET_ERR *perr);
/* -------------------- PHYTER FNCTS -------------------- */
void NetNIC_PhyInit (NET_ERR *perr);
CPU_INT16U NetNIC_PhyRegRd (CPU_INT08U phy,
CPU_INT08U reg,
NET_ERR *perr);
void NetNIC_PhyRegWr (CPU_INT08U phy,
CPU_INT08U reg,
CPU_INT16U val,
NET_ERR *perr);
/* ------------------ CS8900A REG FNCTS ----------------- */
#if (NET_DBG_CFG_TEST_EN == DEF_ENABLED)
CPU_INT32U CS8900_RegRd (CPU_INT32U reg_bank,
CPU_INT32U reg_offset);
#endif
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* DEFINED IN OS'S net_os.c
*********************************************************************************************************
*/
void NetOS_NIC_Init (NET_ERR *perr); /* Create Drv objs & start Drv tasks. */
void NetOS_NIC_TxRdyWait (NET_ERR *perr); /* Wait on drv tx empty signal from NIC. */
void NetOS_NIC_TxRdySignal (void); /* Post drv tx empty signal from NIC. */
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* DEFINED IN PRODUCT'S net_bsp.c
*********************************************************************************************************
*/
CPU_INT16U NetNIC_Rd16 (CPU_INT16U reg_offset);
void NetNIC_Wr16 (CPU_INT16U reg_offset,
CPU_INT16U val);
/* See this 'net_nic.h Notes #3b & #3c'. */
CPU_INT32U NetNIC_Rd32 (CPU_INT32U reg_offset);
void NetNIC_Wr32 (CPU_INT32U reg_offset,
CPU_INT32U val);
void CS8900_PhyFrameDly (void); /* Implement ???? dly; #### remove if unnecessary. */
/* MAY use OS dly to preempt or tmr loop. */
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* DEFINED IN PRODUCT's net_isr_a.s
*********************************************************************************************************
*/
void NetNIC_ISR (void);
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* DEFINED IN PRODUCT'S net_isr.c
*
* Note(s) : (1) See this 'net_nic.c CS8900_Init() Note #5'.
*
* (2) See this 'net_nic.c NetNIC_ISR_Handler() Note #3'.
*********************************************************************************************************
*/
#if (NET_NIC_CFG_INT_CTRL_EN == DEF_ENABLED)
void NetNIC_IntInit (void); /* Init int ctrl'r [see Note #1]. */
void NetNIC_IntClr (void); /* Clr int ctrl'r src(s) [see Note #2]. */
#endif
/*
*********************************************************************************************************
* CONFIGURATION ERRORS
*********************************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -