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

📄 net_sock.h

📁 从Luminary官方网站下载的LM3S6000系列的UCos+Tcp/IP的源码, 经本人稍微修改后可直接在IAR6.2下编译通过,里面包括了LM3S6000系列的所有外设UART, PWn....
💻 H
📖 第 1 页 / 共 5 页
字号:

/*$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 + -