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

📄 udp.h

📁 RTL8019以太网开发板资料
💻 H
字号:
/***********************************************************************
Date:          2007 09 21                                                             
************************************************************************/
#ifndef UDP_H_
#define UDP_H_


 #define HTYPE  0x01                /* 以太网类型 */
#define PTYPE  0x0800              /* IPV4类型 */
#define HLEN   0x06                /* 以太网硬件类型 */
#define PLEN   0x04                /* IPV4长度 */
#define OPER_REQUEST 0x01          /* ARP请求 */
#define OPER_APLY    0x02          /* ARP应答 */

//#define MORE_FRAGMENT           0x2000
#define NOD_ID_LENGTH           6            /* MAC地址长度 */
#define PACKET_LENGTH           1510         /* 数据长度,留出一些余量在计算校验和时防止数组越界 */
#define ETHER_HEAD_LEN          14           /* 以太网头 */
#define SEGMENT_DATA            2000         /* 分片数据缓冲大小 */
#define NET_SEND_BUFF           1510         /* 发送缓冲大小 */
#define IP_LEN                  4
#define MAC_LEN                 6

typedef struct
{
    UWORK32 ulEthernetSendFrame;           /* 以太网卡发送成功的帧数 */
    UWORK32 ulEthernetSendDiscardFrame;    /* 以太网卡发送丢弃的帧数 */
    UWORK32 ulEthernetSendRepeat;          /* 以太网发包的重发总次数 */
    UWORK32 ulEthernetHardError;           /* 接收时硬件出现错误 */
    UWORK32 ulEthernetNextRegError;        /* 读取下一页寄存器时出现错误 */
    UWORK32 ulEthernetBnryRegError;        /* Bnry寄存器出错 */
    
    
    UWORK32 ulEthernetRcvFrame;            /* 以太网卡接收的帧数 */
    UWORK32 ulEthernetRcvBuffExhauste;     /* 以太网接收缓冲用完次数 */
    UWORK32 ulEthernetRcvBuffOverFlow;     /* 以太网接收缓冲溢出 */
    UWORK32 ulEthernetRcvError;            /* 接收错误统计 */

    UWORK32 ulEthernetCNTOverFlow;         /* 计数器溢出 */

    UWORK32 ulEthernetexcError1;           /* 异常错误1 */
    UWORK32 ulEthernetexcError2;           /* 异常错误2 */
    UWORK32 ulEthernetexcError3;           /* 异常错误3 */
    
}ST_ETHERNET_STATISTICS;
/*************************************************************************************/
#define ARP_OLD_NUM  3                         /* 老化后,ARP 3次不成功就要复位ARP */

        /* 接收的以太网帧结构 */
typedef struct 
{     
    UWORK8   ucaDestNodID[NOD_ID_LENGTH];      /* 目的网卡地址 */
    UWORK8   ucaSourceNodID[NOD_ID_LENGTH];    /* 原网卡地址 */
    UWORK16 usprotocol;                        /* 下一层协议 */
    UWORK8   ucaPacket[PACKET_LENGTH];         /* 接收以太网包的内容 */
}ST_RECEIVE_ETHERNET;


#define HTTP_PORT  					80

/*************************************************************************************/
        /* ICMP报文头结构 */
typedef struct
{
    UWORK8   ucType;
    UWORK8   ucCode;
    UWORK16 usCheckSum;
    UWORK16 usID;
    UWORK16 usSeqNum;
}ST_ICMP_HEAD_FORMAT;


#define ICMP_ECHO               8           /* 回送请求 */
#define ICMP_ECHO_REPLY         0           /* 回送回答 */
#define ICMP_ROUTER_RE          10          /* 路由询问 */
#define ICMP_ROUTER_REPLY       9           /* 路由通告 */
#define ICMP_ROUTER_CHANGE      5           /* 路由改变 */
#define ICMP_PORT_UNREACHABLE   3           /* 目的端口不可达 */
#define ICMP_SOURCE_QUENCH      4           /* 源端抑制 */

/* 目的端口不可达类型 */
#define NET_UNREACHABLE         0
#define HOST_UNREACHABLE        1
#define PROTOCAL_UNREACHABLE    2
#define PORT_UNREACHABLE        3
#define NET_UNKNOW              6
#define HOST_UNKNOW             7
#define NET_UNPEMETED           9
#define HOST_UNPEMETED          10
#define HOST_UNREACHABLE13      13
#define HOST_UNREACHABLE14      14
#define HOST_UNREACHABLE15      15

#define SOUECE_RESTRAIN_DELAY   3           /* 收到源端抑制后需要延时发送周期数 */
/*************************************************************************************/
#define CONFIG_PORT     65534          /* 广播配置端口 */
#define UDP_DATA_START  28             /* 28 = 20(IP头) + 8(UDP头) */
        /* UDP报文头结构 */
typedef struct
{
    UWORK16 usSourcePort;
    UWORK16 usDesPort;
    UWORK16 usTotalLen;
    UWORK16 usCheckSum;
}ST_UDP_HEAD_FORMAT;

typedef struct
{
    UWORK32 ulUDPSendDataNum;          /* UDP发送的数据个数 */
    UWORK32 ulUDPReceiveDataNum;       /* UDP接收的数据个数 */
    UWORK32 ulUDPPortError;            /* UDP报文中端口号错误次数 */
    UWORK32 ulUDPCheckSumError;        /* UDP报文中校验和错误次数 */    
}ST_UDP_STATISTICS;
/*************************************************************************************/
#define COMMAND_START_ADDR      60      /* 配置报文命令位置 */
#define SAVE_OK                 61      /* 保存成功 */

#define EQUNAME_LEN             61      /* 1个字节,名字长度 */
#define EUQ_NAME                62      /* 15个字节作为名字空间 */

#define IP_MODE                 77      /* 1个字节,IP模式 */
#define MAC_ADDR                78      /* 6个字节,MAC地址 */
#define IP_ADDR                 84      /* 4个字节,本地IP地址 */
#define NET_MASK                88      /* 4个字节,子网掩码 */
#define GATE_WAY                92      /* 4个字节,网关 */
#define REMOTE_IPADDR1          96      /* 4个字节,远程IP1 */
#define LOCAL_PORT              100     /* 2个字节,本地端口号 */
#define REMOTE_PORT1            102     /* 2个字节,远程端口号1 */
          /* 保留64个字节 */
#define BAUND_RATE              168     /* 1个字节,波特率 */
          /* 保留32个字节 */
#define RUN_DAYS                201     /* 2个字节,运行天数 */
#define RUN_HOURS               203     /* 1个字节,小时数 */
#define RUN_MINUTES             204     /* 1个字节,分钟数 */
#define RUN_SECONDS             205     /* 1个字节,秒数 */
#define UDP_RCV_BYTES           206     /* 4个字节,UDP接收字节数 */
#define UDP_SEND_BYTES          210     /* 4个字节,UDP发送字节数 */
#define UART_RCV_BYTES          214     /* 4个字节,串口接收字节数 */
#define UART_SEND_BYTES         218     /* 4个字节,串口发送字节数 */
#define UART_RCV_SOFT_OVERFLOW  222     /* 4个字节,串口接收软件溢出 */
#define UART_SEND_SOFT_OVERFLOW 226     /* 4个字节,串口发送软件溢出 */
#define HARD_SOFT_EIDTION       230     /* 7个字节版本号,ASCII码 */

          /* 保留100个字节 */
#define END_PARA                300                 /*  */ 

          /* 收到配置软件的参数配置请求命令 */
#define BROADCAST_SEARCH        0x00                /* 广播搜索 */
#define CONFIG_REQUEST          0x02                /* 请求配置 */
#define SAVE_NET_CONFIG         0x04                /* 保存网口配置 */
#define REFLESH_STATISTIC       0x06                /* 刷新统计信息 */
#define CLEAR_STATISTIC         0x08                /* 清零统计信息请求 */
#define RESET_SYSTEM            0x0a                /* 复位系统 */

          /* 发给配置软件的命令 */
#define REPLY_BROADCAST         0x01                /* 广播搜索回应 */
#define REPLY_CONFIG            0x03                /* 配置请求回应 */
#define REPLY_SAVE_NETCONFIG    0x05                /* 保存网口配置回应 */
#define REPLY_FLESH             0x07                /* 刷新应答 */
#define REPLY_CLEAR_STATISTIC   0x09                /* 清零统计信息应答 */

extern xdata UWORK8 MAC_Remote_buf[ETHER_HEAD_LEN];         // 以太网头(目的MAC,源MAC,协议) 
extern xdata UWORK8 NetSend_buf[NET_SEND_BUFF];           // 以太网发送缓冲 


extern bit EthernetBuf0DataFlag;                                    // 以太网卡缓冲0已有数据 */             
extern bit EthernetLinkFlag;                                    /* 以太网是否LINK上 */
extern bit EthernetNoDataFlag;                                  /* 以太网芯片中没有数据 */

extern UWORK16 RTL8019asRcvNum;                        /* 在缓存中以太网包的个数,16K存满64页,每页256字节 */
extern xdata ST_RECEIVE_ETHERNET gstaRevEthernet;             /* 接收以太网包 */
extern xdata ST_ETHERNET_STATISTICS gstEthernetStatistics;    /* 以太网卡收发统计 */
extern xdata UWORK8 gucaTmacSmacType[ETHER_HEAD_LEN];         /* 以太网头(目的MAC,源MAC,协议) */
extern xdata UWORK8 gucaNetSendBuff[NET_SEND_BUFF];           /* 以太网发送缓冲 */
extern xdata UWORK8 gucaSegTemp[SEGMENT_DATA];                /* 分片数据 */

/************************************************************************/
extern UWORK8 IpModeNum;                                  /* 在不同模式下IP数据不一样 */
extern UWORK8 ArpCachePoniter;                        /* ARP高速缓存指针 */
extern xdata UWORK8 gucARPOddNum;                             /* 老化后,ARP完不成的次数 */
/************************************************************************/
extern xdata UWORK16 LocalIpID;                                 /* 本地IP的ID号 */
extern xdata UWORK16 RevIpID;                              /* 接收的ID号 */

extern bit  gbMoreSegFlag;                                    /* 还有更多的分片标志 */
extern bit  gbHaveFragment;                                   /* 有分片标志 */
/***********************************************************************/
extern xdata UWORK8 SetupIP_RcvSignal[32];              /* 接收前导和标志信号 */
extern xdata UWORK8 SetupIP_SendSignal[32];             /* 发送前导和标志信号 */
extern xdata ST_UDP_STATISTICS gstUDPStatistics;              /* UDP统计 */

extern void UDPConfigSend(UWORK16 usUdpDataLen);
extern void UdpReceive(void);
extern void UdpSend(UWORK8 *pucAddr,UWORK16 usLen);


#endif
/*************************************************************************************/

⌨️ 快捷键说明

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