📄 net_sock.h
字号:
*********************************************************************************************************
*/
/* -------------------- SOCK TYPES -------------------- */
#define NET_SOCK_TYPE_NONE 0
#define NET_SOCK_TYPE_DATAGRAM SOCK_DGRAM
#define NET_SOCK_TYPE_STREAM SOCK_STREAM
/* -------------- TCP/IP SOCK PROTOCOLS --------------- */
#define NET_SOCK_PROTOCOL_DFLT 0
#define NET_SOCK_PROTOCOL_NONE NET_SOCK_PROTOCOL_DFLT
#define NET_SOCK_PROTOCOL_UDP IPPROTO_UDP
#define NET_SOCK_PROTOCOL_TCP IPPROTO_TCP
/*
*********************************************************************************************************
* NETWORK SOCKET ADDRESS DEFINES
*********************************************************************************************************
*/
/* ------------------ SOCK ADDR CFG ------------------- */
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
#define NET_SOCK_ADDR_IP_LEN_PORT (sizeof(NET_PORT_NBR))
#define NET_SOCK_ADDR_IP_LEN_ADDR (sizeof(NET_IP_ADDR))
#define NET_SOCK_ADDR_IP_IX_BASE 0
#define NET_SOCK_ADDR_IP_IX_PORT NET_SOCK_ADDR_IP_IX_BASE
#define NET_SOCK_ADDR_IP_IX_ADDR (NET_SOCK_ADDR_IP_IX_PORT + NET_SOCK_ADDR_IP_LEN_PORT)
#define NET_SOCK_ADDR_IP_WILD_CARD INADDR_ANY
#define NET_SOCK_ADDR_IP_BROADCAST INADDR_BROADCAST
#endif
/*$PAGE*/
/*
*********************************************************************************************************
* NETWORK SOCKET API DEFINES
*********************************************************************************************************
*/
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -