?? udp.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 + -