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

📄 etherne.h

📁 ARM SYS CODE 用于ARM上的各种原代码,包括当前最常用的驱动程序
💻 H
字号:
/* Ethernet driver definitions */
/* NOTE:replace sizeof(ETHERHDR) with ETHHDRLEN!!*/
#ifndef BYTE
#define BYTE unsigned char
#endif
#ifndef WORD
#define WORD unsigned short
#endif
#ifndef LWORD
#define LWORD unsigned int//unsigned long
#endif

/* Ensure network structures aren't padded (DJGPP and VC) */
//#pragma pack(1)

#define MACLEN      6           /* Ethernet (MAC) address length */
#define CRCLEN      4           /* Ethernet hardware CRC length */
#define BCASTADDR 0xff,0xff,0xff,0xff,0xff,0xff /* Broadcast address */

/* Ehernet hardware Rx frame length includes the trailing CRC */
#define MAXFRAMEC   1518        /* Maximum frame size (incl CRC) */
#define MINFRAMEC   64          /* Minimum frame size (incl CRC) */

/* Higher-level drivers exclude the CRC from the frame length */
#define MAXFRAME    1514        /* Maximum frame size (excl CRC) */
#define MINFRAME    60          /* Minimum frame size (excl CRC) */

/* Ethernet (DIX) header */
typedef struct {
    BYTE dest[MACLEN];          /* Destination MAC address */
    BYTE srce[MACLEN];          /* Source MAC address */
    WORD ptype;                 /* Protocol type or length */
} ETHERHDR;

#define ETHHDRLEN  14            /* replace sizeof(ETHERHDR) with ETHHDRLEN!!*/
/* Ethernet (DIX) frame; data size is frame size minus header & CRC */
#define ETHERMTU (MAXFRAME-sizeof(ETHERHDR))
typedef struct {
    ETHERHDR h;                 /* Header */
    BYTE data[ETHERMTU];        /* Data */
    LWORD crc;                  /* CRC */
} ETHERFRAME;

/* 802.3 SNAP header */
typedef struct {
    WORD lsap;                  /* Link Service Access Point */
    BYTE ctrl;                  /* Control byte */
    BYTE oui[3];                /* Organisational Unit Identifier */
    WORD ptype;                 /* Protocol type */
} SNAPHDR;

/* 802.3 SNAP frame */
#define SNAPMTU (ETHERMTU-sizeof(SNAPHDR))
typedef struct {
    ETHERHDR e;                 /* Ethernet header (pcol is length) */
    SNAPHDR  s;                 /* 802.3 SNAP header */
    BYTE data[SNAPMTU];         /* Data */
    LWORD crc;                  /* CRC */
} SNAPFRAME;

/* NE2000-compatible driver prototypes */
int init_etherne(WORD dtype, LWORD baseaddr);
void close_etherne(WORD dtype);
BYTE *etherne_addr(WORD dtype);
void poll_etherne(WORD dtype);
WORD get_etherne(WORD dtype, void *pkt);
WORD put_etherne(WORD dtype, void *pkt, WORD len);

void ethernet_test(void);

/* EOF */

⌨️ 快捷键说明

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