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

📄 typedefs.#2

📁 用c8051f340基于51单片机上网
💻 #2
字号:
//-----------------------------------------------------------------------------
// typedefs.h
//-----------------------------------------------------------------------------
// Copyright 2006 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// Program Description:
// 
// Contains global type definitions
//
// FID:            
// Target:         Multiple
// Tool chain:     Keil C51 7.20 / Keil EVAL C51
//                 Silicon Laboratories IDE version 2.72 
// Command Line:   See Readme.txt
// Project Name:   CP220x_Ethernet_Routines
//
// 
//
// Release 1.1
//    - Configures C8051F120 SYSCLK to 98 MHz
//
// Release 1.0
//    -Initial Release (FB)
//    -30 MAY 2006
//
//-----------------------------------------------------------------------------
// NET.H
//
//-----------------------------------------------------------------------------


typedef unsigned char  				UCHAR;
typedef unsigned int 				UINT;
typedef unsigned long				ULONG;
typedef unsigned long				LONG;
void eth_send(UCHAR xdata * outbuf, UCHAR * hwaddr, UINT ptype, UINT len);
// Constants
#define TRUE      					1
#define ON								1
#define OK                    	1
#define FALSE     					0
#define OFF								0
#define MATCH							0
#define RET		   					0x0D
#define LF								0x0A
#define SPACE		 					0x20

// Port numbers
#define ECHO_PORT						7
#define DAYTIME_PORT					13
#define CHARGEN_PORT					19
#define TIME_PORT						37
#define HTTP_PORT  					80


// Event word bits
#define EVENT_ETH_ARRIVED			0x0001
#define EVENT_AGE_ARP_CACHE		0x0002
#define EVENT_TCP_RETRANSMIT		0x0004
#define EVENT_TCP_INACTIVITY		0x0008
#define EVENT_ARP_RETRANSMIT		0x0010
#define EVENT_READ_ANALOG			0x0020
#define EVENT_RS232_ARRIVED		0x0040


// Type number field in Ethernet frame
#define IP_PACKET             	0x0800
#define ARP_PACKET            	0x0806
#define RARP_PACKET					0x8035

// Protocol identifier field in IP datagram
#define ICMP_TYPE             	1
#define IGMP_TYPE						2
#define TCP_TYPE              	6
#define UDP_TYPE              	17

// Message type field in ARP messages 
#define ARP_REQUEST           	1
#define ARP_RESPONSE          	2
#define RARP_REQUEST		        	3
#define RARP_RESPONSE         	4

// Hardware type field in ARP message
#define DIX_ETHERNET          	1
#define IEEE_ETHERNET         	6



typedef struct
{
   ULONG ipaddr;
   UCHAR hwaddr[6];
   UCHAR timer; 
} ARP_CACHE;


typedef struct
{
	UCHAR xdata * buf;
	ULONG ipaddr;
	UCHAR proto_id;
	UINT  len;
	UCHAR timer;
} WAIT;


typedef struct
{
	UINT  hardware_type; 
   UINT  protocol_type;           
   UCHAR hwaddr_len;
   UCHAR ipaddr_len;               
   UINT  message_type;
   UCHAR source_hwaddr[6];              
   ULONG source_ipaddr;
   UCHAR dest_hwaddr[6];    
   ULONG dest_ipaddr;
} ARP_HEADER;


typedef struct
{
  UCHAR dest_hwaddr[6];
  UCHAR source_hwaddr[6];
  UINT  frame_type;
} ETH_HEADER;


typedef struct
{
   UCHAR ver_len;
   UCHAR type_of_service;
   UINT  total_length;
   UINT  identifier;
   UINT  fragment_info;
   UCHAR time_to_live;
   UCHAR protocol_id;
   UINT  header_cksum;
   ULONG source_ipaddr;
   ULONG dest_ipaddr;
} IP_HEADER;


typedef struct
{
   UCHAR msg_type;
   UCHAR msg_code;
   UINT  checksum;
   UINT  identifier;
   UINT  sequence;
	UCHAR echo_data;
} PING_HEADER;


typedef struct
{
   UCHAR msg_type;
   UCHAR msg_code;
   UINT  checksum;
   ULONG msg_data;
   UCHAR echo_data;
} ICMP_ERR_HEADER;


typedef struct 
{
   UINT  source_port;
   UINT  dest_port;
   UINT  length;
   UINT  checksum;
	UCHAR msg_data;
} UDP_HEADER;


typedef struct
{
   UINT  source_port;
   UINT  dest_port;
   ULONG sequence;
   ULONG ack_number;
   UINT  flags;
   UINT  window;
   UINT  checksum;
   UINT  urgent_ptr;
	UCHAR options;
} TCP_HEADER;


typedef struct
{
  ULONG ipaddr;
  UINT  port;
  ULONG his_sequence;
  ULONG my_sequence;
  ULONG old_sequence;
  ULONG his_ack;
  UCHAR timer;
  UCHAR inactivity;	 
  UCHAR state;
  char  query[20];
} CONNECTION;
//-----------------------------------------------------------------------------
// Global Type Definitions
//-----------------------------------------------------------------------------

#ifndef	MACADDRESS
typedef union MACADDRESS {
   unsigned int Int[3];
   unsigned char Char[6];
} MACADDRESS;
#endif

#ifndef	ULONG
typedef union ULONG {
   unsigned long Long;
   unsigned int Int[2];
   unsigned char Char[4];
} ULONG;
#endif

#ifndef	LONG
typedef union LONG {
   long Long;
   unsigned int Int[2];
   unsigned char Char[4];
} LONG;
#endif

#ifndef UINT
typedef union UINT {
   unsigned int Int;
   unsigned char Char[2];
} UINT;
#endif

#ifndef UCHAR
typedef unsigned char UCHAR;
#endif

typedef union IPADDRESS {                 // The 32-bit IP address
   unsigned long Long;
   unsigned int Int[2];
   unsigned char Char[4];
} IPADDRESS;


//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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