📄 net_sock.h
字号:
/*$PAGE*/
/*
*********************************************************************************************************
* NETWORK SOCKET DATA TYPE
*
* NET_SOCK
* |-------------|
* | Sock Type |
* |-------------| Next
* | O----------> Socket Buffer Queue
* |-------------| Heads -------
* | O------------------------------------> | |
* |-------------| | |
* | O---------------------- -------
* |-------------| | | ^
* | Conn IDs | | v |
* |-------------| | -------
* | Sock | | | |
* | Family/ | | | |
* | Protocol | | -------
* |-------------| | | ^
* | Conn Ctrls | | Buffer Queue v |
* |-------------| | Tails -------
* | Flags | ---------------> | |
* |-------------| | |
* | State | -------
* |-------------|
*
*
* Note(s) : (1) Forced word-alignment at start of socket NOT required since first data member 'Type'
* is declared as 'CPU_INT32U'.
*
* (2) 'NextSockPtr' ideally declared as 'NET_SOCK' pointer; declared as 'void' pointer because
* 'NET_SOCK' NOT fully defined at time of declaration.
*
* (3) #### 'TxQ_Head'/'TxQ_Tail' may NOT be necessary (remove if unnecessary).
*********************************************************************************************************
*/
typedef struct net_sock {
NET_TYPE Type; /* Type cfg'd @ init : NET_SOCK_TYPE_SOCK. */
void *NextSockPtr; /* Ptr to NEXT sock. */
NET_BUF *RxQ_Head; /* Ptr to head of sock's rx buf Q. */
NET_BUF *RxQ_Tail; /* Ptr to tail of sock's rx buf Q. */
#if 0 /* #### See Note #3. */
NET_BUF *TxQ_Head; /* Ptr to head of sock's tx buf Q. */
NET_BUF *TxQ_Tail; /* Ptr to tail of sock's tx buf Q. */
#endif
NET_SOCK_ID ID; /* Sock id. */
NET_CONN_ID ID_Conn; /* Conn id. */
CPU_INT16S Family; /* Sock protocol family. */
CPU_INT16S Protocol; /* Sock protocol. */
CPU_INT16S SockType; /* Sock type. */
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
NET_SOCK_Q_SIZE ConnAcceptQ_SizeMax; /* Max Q size to accept rx'd conn reqs. */
NET_SOCK_Q_SIZE ConnAcceptQ_SizeCur; /* Cur Q size to accept rx'd conn reqs. */
/* Conn accept Q (conn id's q'd into array). */
NET_CONN_ID ConnAcceptQ[NET_SOCK_CFG_CONN_ACCEPT_Q_SIZE_MAX];
NET_SOCK_Q_SIZE ConnAcceptQ_HeadIx; /* Conn accept Q head ix. */
NET_SOCK_Q_SIZE ConnAcceptQ_TailIx; /* Conn accept Q tail ix. */
#endif
CPU_INT16U Flags; /* Sock flags. */
NET_SOCK_STATE State; /* Cur sock state. */
} NET_SOCK;
/*$PAGE*/
/*
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*/
NET_SOCK_EXT NET_SOCK NetSock_Tbl[NET_SOCK_CFG_NBR_SOCK];
NET_SOCK_EXT NET_SOCK *NetSock_PoolPtr; /* Ptr to pool of free socks. */
NET_SOCK_EXT NET_STAT_POOL NetSock_PoolStat;
NET_SOCK_EXT NET_PORT_NBR NetSock_RandomPortNbrQ[NET_SOCK_PORT_NBR_RANDOM_NBR];
NET_SOCK_EXT NET_PORT_NBR NetSock_RandomPortNbrQ_HeadIx; /* Random port FIFO Q head ix. */
NET_SOCK_EXT NET_PORT_NBR NetSock_RandomPortNbrQ_TailIx; /* Random port FIFO Q tail ix. */
NET_SOCK_EXT NET_PORT_NBR_QTY NetSock_RandomPortNbrQ_NbrUsed; /* Random port FIFO Q nbr used. */
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED) /* -------------- NET SOCK STATS -------------- */
NET_SOCK_EXT NET_CTR NetSock_StatRxPktCtr; /* Nbr rx'd pkts. */
NET_SOCK_EXT NET_CTR NetSock_StatRxPktProcessedCtr; /* Nbr rx'd pkts delivered to apps. */
#endif
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED) /* -------------- NET SOCK ERRS --------------- */
NET_SOCK_EXT NET_CTR NetSock_ErrNullPtrCtr; /* Nbr null sock ptr accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrNullSizeCtr;
NET_SOCK_EXT NET_CTR NetSock_ErrNoneAvailCtr; /* Nbr sock unavail accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrNotUsedCtr; /* Nbr unused sock accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrCloseCtr; /* Nbr fault sock closes. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidFamilyCtr; /* Nbr socks with invalid sock family. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidProtocolCtr; /* Nbr socks with invalid sock protocol. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidSockTypeCtr; /* Nbr socks with invalid sock type. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidSockCtr; /* Nbr invalid sock ID accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidFlagsCtr; /* Nbr socks with invalid flags. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidOpCtr; /* Nbr socks with invalid op. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidStateCtr; /* Nbr socks with invalid state. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidAddrCtr; /* Nbr socks with invalid addr. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidAddrLenCtr; /* Nbr socks with invalid addr len. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidAddrInUseCtr; /* Nbr socks with addr already in use. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidPortNbrCtr; /* Nbr socks with invalid port nbr. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidConnInUseCtr; /* Nbr socks with conn already in use. */
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
NET_SOCK_EXT NET_CTR NetSock_ErrConnAcceptQ_NoneAvailCtr; /* Nbr accept Q conn unavail accesses. */
#endif
NET_SOCK_EXT NET_CTR NetSock_ErrRandomPortNbrNoneAvailCtr; /* Nbr random port nbr unavail accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrRxDestCtr; /* Nbr rx'd pkts for unavail dest. */
NET_SOCK_EXT NET_CTR NetSock_ErrRxPktDiscardedCtr; /* Nbr rx'd pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
NET_SOCK_EXT NET_CTR NetSock_ErrTxInvalidSizeCtr;
#endif
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidTypeCtr; /* Nbr sock invalid type accesses. */
NET_SOCK_EXT NET_CTR NetSock_ErrInvalidConnCtr;
NET_SOCK_EXT NET_CTR NetSock_ErrRxInvalidBufIxCtr; /* Nbr rx pkts with invalid buf ix. */
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
NET_SOCK_EXT NET_CTR NetSock_ErrConnAcceptQ_MaxCtr;
#endif
NET_SOCK_EXT NET_CTR NetSock_ErrRandomPortNbrQ_UsedCtr;
NET_SOCK_EXT NET_CTR NetSock_ErrRandomPortNbrQ_NbrInQ_Ctr;
#endif
#endif
/*$PAGE*/
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
void NetSock_Init (NET_ERR *perr);
/* ----------- RX FNCTS ----------- */
void NetSock_Rx (NET_BUF *pbuf,
NET_ERR *perr);
/* ----------- TX FNCTS ----------- */
/* -------- SOCK API FNCTS -------- */
NET_SOCK_ID NetSock_Open (CPU_INT16S protocol_family,
CPU_INT16S sock_type,
CPU_INT16S protocol,
NET_ERR *perr);
NET_SOCK_RTN_CODE NetSock_Close (NET_SOCK_ID sock_id,
NET_ERR *perr);
void NetSock_CloseFromConn (NET_SOCK_ID sock_id);
void NetSock_FreeConnFromSock (NET_SOCK_ID sock_id,
NET_CONN_ID conn_id);
NET_SOCK_RTN_CODE NetSock_Bind (NET_SOCK_ID sock_id,
NET_SOCK_ADDR *paddr_local,
NET_SOCK_ADDR_LEN addr_len,
NET_ERR *perr);
NET_SOCK_RTN_CODE NetSock_Conn (NET_SOCK_ID sock_id,
NET_SOCK_ADDR *paddr_remote,
NET_SOCK_ADDR_LEN addr_len,
NET_ERR *perr);
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
void NetSock_ConnSignalReq (NET_SOCK_ID sock_id,
NET_ERR *perr);
void NetSock_ConnSignalAccept (NET_SOCK_ID sock_id,
NET_CONN_ID conn_id,
NET_ERR *perr);
void NetSock_ConnSignalClose (NET_SOCK_ID sock_id,
CPU_BOOLEAN data_avail,
NET_ERR *perr);
NET_SOCK_RTN_CODE NetSock_Listen (NET_SOCK_ID sock_id,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -