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

📄 net_if.h

📁 从Luminary官方网站下载的LM3S6000系列的UCos+Tcp/IP的源码, 经本人稍微修改后可直接在IAR6.2下编译通过,里面包括了LM3S6000系列的所有外设UART, PWn....
💻 H
📖 第 1 页 / 共 2 页
字号:
*               codes to enforce ANSI-compliance of 31-character symbol length uniqueness.
*
*           (2) Default SNAP 'Organizational Unique Identifier' (OUI) IEEE 802.2 frame type is ALWAYS
*               Ethernet frame type (see 'IEEE 802 HEADER / FRAME  Note #1').
*********************************************************************************************************
*/

#define  NET_IF_IEEE_802_FRAME_LEN_MAX                  (NET_IF_MTU_IEEE_802 + NET_IF_HDR_SIZE_BASE_IEEE_802)

                                                                /* ------- IEEE 802.2 LOGICAL LINK CONTROL (LLC) ------ */
#define  NET_IF_IEEE_802_LLC_DSAP                       0xAA
#define  NET_IF_IEEE_802_LLC_SSAP                       0xAA
#define  NET_IF_IEEE_802_LLC_CTRL                       0x03

                                                                /* --- IEEE 802.2 SUB-NETWORK ACCESS PROTOCOL (SNAP) -- */
#define  NET_IF_IEEE_802_SNAP_CODE_SIZE                    3    /*  3-octet SNAP org code         (see Note #1).        */
#define  NET_IF_IEEE_802_SNAP_CODE_ETHER            0x000000    /*    Dflt  SNAP org code (Ether) [see Note #2].        */
#define  NET_IF_IEEE_802_SNAP_CODE_00                   0x00    /*    Dflt  SNAP org code, Octet #00.                   */
#define  NET_IF_IEEE_802_SNAP_CODE_01                   0x00    /*    Dflt  SNAP org code, Octet #01.                   */
#define  NET_IF_IEEE_802_SNAP_CODE_02                   0x00    /*    Dflt  SNAP org code, Octet #02.                   */

#define  NET_IF_IEEE_802_SNAP_TYPE_IP                    NET_IF_FRAME_ETHER_TYPE_IP
#define  NET_IF_IEEE_802_SNAP_TYPE_ARP                   NET_IF_FRAME_ETHER_TYPE_ARP


/*$PAGE*/
/*
*********************************************************************************************************
*                                             DATA TYPES
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                             NETWORK INTERFACE HEADER / FRAME DATA TYPES
*********************************************************************************************************
*/

                                                            /* ---------------------- NET IF HDR ---------------------- */
typedef  struct  net_if_hdr {
    CPU_INT08U              AddrDest[NET_IF_HDR_SIZE_ADDR]; /* Ethernet dest  addr.                                     */
    CPU_INT08U              AddrSrc[NET_IF_HDR_SIZE_ADDR];  /* Ethernet src   addr.                                     */
    CPU_INT16U              FrameType_Len;                  /* Demux Ethernet frame type vs. IEEE 802.3 frame len.      */
} NET_IF_HDR;


/*
*********************************************************************************************************
*                                 ETHERNET HEADER / FRAME DATA TYPES
*
* Note(s) : (1) Frame 'Data' buffer CANNOT be declared to force word-alignment.  'Data' buffer MUST immediately
*               follow frame 'Hdr' since Ethernet frames are contiguous, non-aligned data packets.
*
*           (2) 'Data' declared with 1 entry; prevents removal by compiler optimization.
*
*           (3) Frame CRC's are computed/validated by NIC.  NO software CRC is handled for receive or transmit.
*********************************************************************************************************
*/

                                                            /* ------------------ NET IF ETHER HDR -------------------- */
typedef  struct  net_if_hdr_ether {
    CPU_INT08U              AddrDest[NET_IF_HDR_SIZE_ADDR]; /* Ethernet dest  addr.                                     */
    CPU_INT08U              AddrSrc[NET_IF_HDR_SIZE_ADDR];  /* Ethernet src   addr.                                     */
    CPU_INT16U              FrameType;                      /* Ethernet frame type.                                     */
} NET_IF_HDR_ETHER;


                                                            /* ------------------ NET IF ETHER FRAME ------------------ */
typedef  struct  net_if_frame_ether {
    NET_IF_HDR_ETHER        Hdr;
    CPU_INT08U              Data[1];                        /* See Note #2.                                             */
} NET_IF_FRAME_ETHER;


/*$PAGE*/
/*
*********************************************************************************************************
*                                 IEEE 802 HEADER / FRAME DATA TYPES
*
* Note(s) : (1) Header 'SNAP_OrgCode' defines the SNAP 'Organizational Unique Identifier' (OUI).  The OUI
*               indicates the various organization/vendor/manufacturer with each organization then defining
*               their respective frame types.
*
*               However, the default SNAP OUI indicates Ethernet frame types & is ALWAYS used.  ALL other 
*               OUI's are discarded as invalid.
*
*               See also 'IEEE 802 DEFINES  Notes #1 & #2'.
*
*           (2) Frame 'Data' buffer CANNOT be declared to force word-alignment.  'Data' buffer MUST immediately
*               follow frame 'Hdr' since Ethernet frames are contiguous, non-aligned data packets.
*
*           (3) 'Data' declared with 1 entry; prevents removal by compiler optimization.
*
*           (4) Frame CRC's are computed/validated by NIC.  NO software CRC is handled for receive or transmit.
*********************************************************************************************************
*/

                                                            /* ------------------ NET IF IEEE 802 HDR ----------------- */
typedef  struct  net_if_hdr_ieee_802 {
    CPU_INT08U              AddrDest[NET_IF_HDR_SIZE_ADDR]; /* IEEE 802.3 dest  addr.                                   */
    CPU_INT08U              AddrSrc[NET_IF_HDR_SIZE_ADDR];  /* IEEE 802.3 src   addr.                                   */
    CPU_INT16U              FrameLen;                       /* IEEE 802.3 frame len.                                    */

                                                            /* --------- IEEE 802.2 LOGICAL LINK CONTROL (LLC) -------- */
    CPU_INT08U              LLC_DSAP;                       /* Dest Serv Access Pt.                                     */
    CPU_INT08U              LLC_SSAP;                       /* Src  Serv Access Pt.                                     */
    CPU_INT08U              LLC_Ctrl;                       /* Ctrl Field.                                              */

                                                            /* ----- IEEE 802.2 SUB-NETWORK ACCESS PROTOCOL (SNAP) ---- */
    CPU_INT08U              SNAP_OrgCode[NET_IF_IEEE_802_SNAP_CODE_SIZE];       /* Org code (see Note #1).              */
    CPU_INT16U              SNAP_FrameType;                                     /* IEEE 802.2 frame type.               */
} NET_IF_HDR_IEEE_802;


                                                            /* ----------------- NET IF IEEE 802 FRAME ---------------- */
typedef  struct  net_if_frame_ieee_802 {
    NET_IF_HDR_IEEE_802     Hdr;
    CPU_INT08U              Data[1];                        /* See Note #3.                                             */
} NET_IF_FRAME_IEEE_802;


/*$PAGE*/
/*
*********************************************************************************************************
*                                          GLOBAL VARIABLES
*********************************************************************************************************
*/

NET_IF_EXT  CPU_INT08U   NetIF_MAC_Addr[NET_IF_ADDR_SIZE];      /* NIC's MAC addr.                                      */
NET_IF_EXT  CPU_BOOLEAN  NetIF_MAC_AddrValid;                   /* Indicates if valid NIC MAC addr avail.               */



#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)                        /* ------------------- NET IF STATS ------------------- */
NET_IF_EXT  NET_CTR      NetIF_StatRxPktCtr;                    /* Nbr rx'd pkts.                                       */
NET_IF_EXT  NET_CTR      NetIF_StatRxPktProcessedCtr;           /* Nbr rx'd pkts delivered to supported protocols.      */

NET_IF_EXT  NET_CTR      NetIF_StatRxPktBroadcastCtr;           /* Nbr rx'd pkts broadcast to this     dest.            */

NET_IF_EXT  NET_CTR      NetIF_StatTxPktCtr;                    /* Nbr tx'd pkts.                                       */
NET_IF_EXT  NET_CTR      NetIF_StatTxPktBroadcastCtr;           /* Nbr rx'd pkts broadcast to multiple dest(s).         */
#endif


#if (NET_CTR_CFG_ERR_EN  == DEF_ENABLED)                        /* ------------------- NET IF ERRS -------------------- */
NET_IF_EXT  NET_CTR      NetIF_ErrNullPtrCtr;                   /* Nbr null IF ptr accesses.                            */

NET_IF_EXT  NET_CTR      NetIF_ErrInvalidProtocolCtr;


NET_IF_EXT  NET_CTR      NetIF_ErrRxInvalidFrameCtr;            /* Nbr rx'd pkts with invalid frame.                    */
NET_IF_EXT  NET_CTR      NetIF_ErrRxInvalidAddrDestCtr;         /* Nbr rx'd pkts with invalid dest addr.                */
NET_IF_EXT  NET_CTR      NetIF_ErrRxInvalidAddrSrcCtr;          /* Nbr rx'd pkts with invalid src  addr.                */
NET_IF_EXT  NET_CTR      NetIF_ErrRxPktDiscardedCtr;            /* Nbr rx'd pkts discarded.                             */


NET_IF_EXT  NET_CTR      NetIF_ErrTxInvalidBufLenCtr;
NET_IF_EXT  NET_CTR      NetIF_ErrTxPktDiscardedCtr;            /* Nbr tx   pkts discarded.                             */


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_IF_EXT  NET_CTR      NetIF_ErrRxInvalidBufIxCtr;            /* Nbr rx   pkts with invalid buf ix.                   */

NET_IF_EXT  NET_CTR      NetIF_ErrTxProtocolCtr;
NET_IF_EXT  NET_CTR      NetIF_ErrTxInvalidBufIxCtr;            /* Nbr tx   pkts with invalid buf ix.                   */
NET_IF_EXT  NET_CTR      NetIF_ErrTxHdrDataLenCtr;
#endif

#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void         NetIF_Init          (NET_ERR     *perr);



                                                                /* ------------------- STATUS FNCTS ------------------- */
void         NetIF_MAC_AddrGet   (CPU_INT08U  *paddr,
                                  NET_ERR     *perr);

void         NetIF_MAC_AddrSet   (CPU_INT08U  *paddr,
                                  NET_ERR     *perr);


CPU_BOOLEAN  NetIF_IsValidPktSize(CPU_INT16U   size);           /* Validate an IF pkt size.                             */

CPU_BOOLEAN  NetIF_IsValidAddrSrc(CPU_INT08U  *paddr_src);      /* Validate an IF src addr.                             */



                                                                /* --------------------- RX FNCTS --------------------- */
void         NetIF_Rx            (NET_BUF     *pbuf,
                                  NET_ERR     *perr);


                                                                /* --------------------- TX FNCTS --------------------- */
void         NetIF_Tx            (NET_BUF     *pbuf,
                                  NET_ERR     *perr);

void         NetIF_TxPkt         (NET_BUF     *pbuf,
                                  NET_ERR     *perr);

void         NetIF_TxPktDiscard  (NET_BUF     *pbuf,
                                  NET_ERR     *perr);


/*$PAGE*/
/*
*********************************************************************************************************
*                                        CONFIGURATION ERRORS
*********************************************************************************************************
*/

#ifndef  NET_IF_CFG_TYPE
#error  "NET_IF_CFG_TYPE                  not #define'd in 'net_cfg.h'"
#error  "                           [MUST be  NET_IF_TYPE_ETHER]      "
#elif   (NET_IF_CFG_TYPE != NET_IF_TYPE_ETHER)
#error  "NET_IF_CFG_TYPE            illegally #define'd in 'net_cfg.h'"
#error  "                           [MUST be  NET_IF_TYPE_ETHER]      "

#else
                                                            /* Correctly configured in 'net_cfg_net.h'; DO NOT MODIFY.  */
#ifndef  NET_IF_HDR_SIZE_MAX
#error  "NET_IF_HDR_SIZE_MAX        not #define'd in 'net_cfg_net.h'  "
#error  "                           [NET_IF_HDR_SIZE_MAX  MUST be > 0]"
#elif   (NET_IF_HDR_SIZE_MAX < 1)
#error  "NET_IF_HDR_SIZE_MAX  illegally #define'd in 'net_cfg_net.h'  "
#error  "                           [NET_IF_HDR_SIZE_MAX  MUST be > 0]"
#endif

#endif


                                                            /* Correctly configured in this 'net_if.h'; DO NOT MODIFY.  */
#ifndef  NET_IF_FRAME_MIN_SIZE
#error  "NET_IF_FRAME_MIN_SIZE            not #define'd in 'net_if.h'  "
#error  "                           [NET_IF_FRAME_MIN_SIZE  MUST be > ]"
#error  "                           [NET_IF_HDR_SIZE_MAX              ]"
#elif   (NET_IF_FRAME_MIN_SIZE < NET_IF_HDR_SIZE_MAX)
#error  "NET_IF_FRAME_MIN_SIZE      illegally #define'd in 'net_if.h'  "
#error  "                           [NET_IF_FRAME_MIN_SIZE  MUST be > ]"
#error  "                           [NET_IF_HDR_SIZE_MAX              ]"
#endif




#ifndef  NET_IF_CFG_ADDR_FLTR_EN
#error  "NET_IF_CFG_ADDR_FLTR_EN          not #define'd in 'net_cfg.h'"
#error  "                           [MUST be  DEF_DISABLED]           "
#error  "                           [     ||  DEF_ENABLED ]           "
#elif  ((NET_IF_CFG_ADDR_FLTR_EN != DEF_DISABLED) && \
        (NET_IF_CFG_ADDR_FLTR_EN != DEF_ENABLED ))
#error  "NET_IF_CFG_ADDR_FLTR_EN    illegally #define'd in 'net_cfg.h'"
#error  "                           [MUST be  DEF_DISABLED]           "
#error  "                           [     ||  DEF_ENABLED ]           "
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -