📄 net_sock.h
字号:
*/
#define NET_SOCK_BSD_ADDR_LEN_MAX NET_BSD_ADDR_LEN_MAX
#define NET_SOCK_ADDR_IP_NBR_OCTETS_UNUSED NET_BSD_ADDR_IP_NBR_OCTETS_UNUSED
#define NET_SOCK_BSD_SOCK_ID_MIN_VAL 0
#define NET_SOCK_BSD_SOCK_ID_MAX_VAL 32767
#define NET_SOCK_BSD_ERR_NONE NET_BSD_ERR_NONE
#define NET_SOCK_BSD_ERR_DFLT NET_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_OPEN NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_CLOSE NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_BIND NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_CONN NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_LISTEN NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_ACCEPT NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_RX NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_ERR_TX NET_SOCK_BSD_ERR_DFLT
#define NET_SOCK_BSD_RTN_CODE_CONN_CLOSED NET_BSD_RTN_CODE_CONN_CLOSED
/*
*********************************************************************************************************
* SOCKET FLAG DEFINES
*********************************************************************************************************
*/
#define NET_SOCK_FLAG_RX_DATA_PEEK MSG_PEEK
#define NET_SOCK_FLAG_NO_BLOCK MSG_DONTWAIT
#define NET_SOCK_FLAG_RX_NO_BLOCK NET_SOCK_FLAG_NO_BLOCK
#define NET_SOCK_FLAG_TX_NO_BLOCK NET_SOCK_FLAG_NO_BLOCK
/*$PAGE*/
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* NETWORK SOCKET QUANTITY DATA TYPE
*
* Note(s) : (1) See also 'NETWORK SOCKET IDENTIFICATION DATA TYPE Note #1'.
*********************************************************************************************************
*/
typedef CPU_INT16U NET_SOCK_QTY; /* Defines max qty of socks to support. */
/*
*********************************************************************************************************
* NETWORK SOCKET FAMILY DATA TYPE
*********************************************************************************************************
*/
typedef CPU_INT16U NET_SOCK_FAMILY;
/*
*********************************************************************************************************
* NETWORK SOCKET IDENTIFICATION DATA TYPE
*
* Note(s) : (1) (a) NET_SOCK_NBR_MAX SHOULD be globally #define'd AFTER 'NET_SOCK_QTY' data type declared.
*
* (b) Since socket handle identifiers are data-typed as 16-bit signed integers, the maximum
* unique number of valid socket identifiers (i.e. non-negative) is the total number of
* positive values that 16-bit signed integers support.
*********************************************************************************************************
*/
typedef CPU_INT16S NET_SOCK_ID;
#define NET_SOCK_NBR_MAX DEF_INT_16S_MAX_VAL /* See Note #1. */
/*
*********************************************************************************************************
* NETWORK SOCKET ADDRESS LENGTH DATA TYPE
*********************************************************************************************************
*/
typedef CPU_INT16S NET_SOCK_ADDR_LEN;
/*$PAGE*/
/*
*********************************************************************************************************
* NETWORK SOCKET QUEUE SIZE DATA TYPE
*
* Note(s) : (1) (a) NET_SOCK_Q_SIZE #define's SHOULD be globally #define'd AFTER 'NET_SOCK_Q_SIZE'
* data type declared.
*
* (b) Since socket/connection handle identifiers are data-typed as 16-bit signed
* integers, the maximum unique number of valid identifiers (i.e. non-negative)
* is the total number of positive values that 16-bit signed integers support.
*
* See also 'NETWORK SOCKET IDENTIFICATION DATA TYPE Note #1b'
* & 'net_conn.h NETWORK CONNECTION IDENTIFICATION DATA TYPE Note #2b'.
*
* (2) (a) NET_SOCK_Q_IX #define's SHOULD be globally #define'd AFTER 'NET_SOCK_Q_SIZE'
* data type declared.
*
* (b) Since socket queue size is data typed as a 16-bit unsigned integer but the
* maximum queue sizes are #define'd as 16-bit signed integer values, valid
* socket queue indices are #define'd within the range of 16-bit signed integer
* values but socket queue indice exception values may be #define'd with 16-bit
* unsigned integer values.
*********************************************************************************************************
*/
typedef CPU_INT16U NET_SOCK_Q_SIZE;
/* See Note #1. */
#define NET_SOCK_Q_SIZE_NONE 0
#define NET_SOCK_Q_SIZE_MIN 1
#define NET_SOCK_Q_SIZE_MAX DEF_INT_16S_MAX_VAL /* See Note #1b. */
/* See Note #2. */
#define NET_SOCK_Q_IX_NONE DEF_INT_16U_MAX_VAL
#define NET_SOCK_Q_IX_MIN 0
#define NET_SOCK_Q_IX_MAX (NET_SOCK_Q_SIZE_MAX - 1)
/*
*********************************************************************************************************
* NETWORK SOCKET STATE DATA TYPE
*********************************************************************************************************
*/
typedef CPU_INT08U NET_SOCK_STATE;
/*
*********************************************************************************************************
* NETWORK SOCKET (ERROR) RETURN CODE DATA TYPE
*********************************************************************************************************
*/
typedef CPU_INT16S NET_SOCK_RTN_CODE;
/*$PAGE*/
/*
*********************************************************************************************************
* NETWORK SOCKET ADDRESS DATA TYPES
*
* Note(s) : (1) See 'net_sock.h Note #1a' for supported socket address families.
*
* (2) (a) Socket address structure 'Family' member MUST be configured in host-order & MUST NOT
* be converted to/from network-order.
*
* (b) Socket address structure addresses MUST be configured/converted from host-order to
* network-order.
*********************************************************************************************************
*/
/* ------------------ NET SOCK ADDR ------------------- */
typedef struct net_sock_addr {
NET_SOCK_FAMILY Family; /* Sock family type (see Note #2a). */
CPU_INT08U Addr[NET_SOCK_BSD_ADDR_LEN_MAX]; /* Sock addr (see Note #2b). */
} NET_SOCK_ADDR;
#define NET_SOCK_ADDR_SIZE (sizeof(NET_SOCK_ADDR))
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
/* ----------------- NET SOCK ADDR IP ----------------- */
typedef struct net_sock_addr_ip {
NET_SOCK_FAMILY Family; /* Sock family = NET_SOCK_FAMILY_IP_V4 (AF_INET). */
NET_PORT_NBR Port; /* UDP/TCP port nbr. */
NET_IP_ADDR Addr; /* IP addr. */
CPU_INT08U Unused[NET_SOCK_ADDR_IP_NBR_OCTETS_UNUSED]; /* Unused (MUST be zero). */
} NET_SOCK_ADDR_IP;
#define NET_SOCK_ADDR_IP_SIZE (sizeof(NET_SOCK_ADDR_IP))
#endif
/*$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. */
NET_BUF *TxQ_Head; /* Ptr to head of sock's tx buf Q (see Note #3). */
NET_BUF *TxQ_Tail; /* Ptr to tail of sock's tx buf Q (see Note #3). */
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -