⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_sock.h

📁 ucos的tcpip协议占
💻 H
📖 第 1 页 / 共 4 页
字号:
*/

#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 + -