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

📄 struct.h.a

📁 58enc28j06protuesuip09.rar
💻 A
字号:
//********************************************************************************************
//
// File : _struct.h header for all structure
//
//********************************************************************************************
#ifndef STRUCT_H
#define STRUCT_H 
//typedef enum _BOOL { false = 0, true } bool;
#define BYTE   unsigned char					// 8-bit
#define WORD   unsigned int					// 16-bit
#define DWORD  unsigned long				// 32-bit
//typedef unsigned long	DWORD;				// 32-bit
//#define PGM_P unsigned char 
//#define prog_int8_t char code
typedef union _BYTE_BITS
{
    BYTE byte;
    struct
    {
        unsigned char bit0:1;
        unsigned char bit1:1;
        unsigned char bit2:1;
        unsigned char bit3:1;
        unsigned char bit4:1;
        unsigned char bit5:1;
        unsigned char bit6:1;
        unsigned char bit7:1;
    } bits;
} BYTE_BITS;

typedef union _WORD_BYTES
{
    WORD word;
    BYTE bytes[2];
    struct
    {
        BYTE low;
        BYTE high;
    } byte;
    struct
    {
        unsigned char bit0:1;
        unsigned char bit1:1;
        unsigned char bit2:1;
        unsigned char bit3:1;
        unsigned char bit4:1;
        unsigned char bit5:1;
        unsigned char bit6:1;
        unsigned char bit7:1;
        unsigned char bit8:1;
        unsigned char bit9:1;
        unsigned char bit10:1;
        unsigned char bit11:1;
        unsigned char bit12:1;
        unsigned char bit13:1;
        unsigned char bit14:1;
        unsigned char bit15:1;
    } bits;
} WORD_BYTES;

typedef union _DWORD_BYTE
{
    DWORD dword;
	WORD words[2];
    BYTE bytes[4];
    struct
    {
        WORD low;
        WORD high;
    } word;
    struct
    {
        BYTE LB;
        BYTE HB;
        BYTE UB;
        BYTE MB;
    } byte;
    struct
    {
        unsigned char bit0:1;
        unsigned char bit1:1;
        unsigned char bit2:1;
        unsigned char bit3:1;
        unsigned char bit4:1;
        unsigned char bit5:1;
        unsigned char bit6:1;
        unsigned char bit7:1;
        unsigned char bit8:1;
        unsigned char bit9:1;
        unsigned char bit10:1;
        unsigned char bit11:1;
        unsigned char bit12:1;
        unsigned char bit13:1;
        unsigned char bit14:1;
        unsigned char bit15:1;
        unsigned char bit16:1;
        unsigned char bit17:1;
        unsigned char bit18:1;
        unsigned char bit19:1;
        unsigned char bit20:1;
        unsigned char bit21:1;
        unsigned char bit22:1;
        unsigned char bit23:1;
        unsigned char bit24:1;
        unsigned char bit25:1;
        unsigned char bit26:1;
        unsigned char bit27:1;
        unsigned char bit28:1;
        unsigned char bit29:1;
        unsigned char bit30:1;
        unsigned char bit31:1;
    } bits;
} DWORD_BYTES;

// mac address structure
typedef struct _MAC_ADDR
{
    BYTE byte[6];
}MAC_ADDR;

// ethernet header structure
typedef struct _ETH_HEADER
{
	MAC_ADDR	dest_mac;
	MAC_ADDR	src_mac;
	WORD_BYTES	type;
}ETH_HEADER;

// IP address structure
typedef struct _IP_ADDR
{
	BYTE byte[4];
}IP_ADDR;

// IP header structure
typedef struct _IP_HEADER
{
	BYTE		version_hlen;
	BYTE		type_of_service;
	WORD_BYTES	total_length;
	WORD_BYTES	indentificaton;
	WORD_BYTES	flagment;
	BYTE		time_to_live;
	BYTE		protocol;
	WORD_BYTES	checksum;
	IP_ADDR		src_ip;
	IP_ADDR		dest_ip;

}IP_HEADER;

// ARP packet structure
typedef struct _ARP_PACKET
{
	WORD_BYTES	hardware_type;
	WORD_BYTES	protocol_type;
	BYTE		hardware_length;
	BYTE		protocol_length;
	WORD_BYTES	opcode;
	MAC_ADDR	src_mac;
	IP_ADDR		src_ip;
	MAC_ADDR	dest_mac;
	IP_ADDR		dest_ip;
} ARP_PACKET;

// ICMP packet structure
#define ICMP_MAX_DATA	32
typedef struct _ICMP_PACKET
{
	BYTE		type;
	BYTE		code1;
	WORD_BYTES	checksum;
	WORD_BYTES	identifier;
	WORD_BYTES	sequence_number;
	BYTE		data1[ICMP_MAX_DATA];
} ICMP_PACKET;

// TCP Header
typedef struct _TCP_HEADER
{
	WORD_BYTES	src_port;
	WORD_BYTES	dest_port;
	DWORD_BYTES	sequence_number;
	DWORD_BYTES	seqack_number;
	
	union
	{
		struct
		{
			unsigned char reserved:4;
			unsigned char value:4;			
		}nibble;
		unsigned char byte;
	}data_offset;

	union
	{
		struct
		{			
			unsigned char FIN:1;
			unsigned char SYN:1;
			unsigned char RST:1;
			unsigned char PSH:1;
			unsigned char ACK:1;
			unsigned char URG:1;
			unsigned char reserved:2;			
		} bits;
		unsigned char byte;
	} flags;
	WORD_BYTES	window;
	WORD_BYTES	checksum;
	WORD_BYTES	urgent_pointer;
} TCP_HEADER;

typedef struct _TCP_OPTION
{
	BYTE		kind;
	BYTE		length;
	WORD_BYTES	max_seg_size;
} TCP_OPTION;

typedef struct _UDP_HEADER
{
	WORD	src_port;
	WORD	dst_port;
	WORD	length;
	WORD	checksum;
} UDP_HEADER;

union FLAG1
{
	BYTE byte;
	struct
	{
		unsigned char key_is_executed:1;
		unsigned char update_display:1;
		unsigned char lcd_busy:1;
		unsigned char key_press:1;
		unsigned char send_temp:1;
		unsigned char syn_is_sent:1;
		unsigned char syn_is_received:1;
		unsigned char send_temp_timeout:1;
	}bits;
};//flag1;

union FLAG2
{
	BYTE byte;
	struct
	{
		unsigned char key_hold:1;
		unsigned char software_reset:1;
		unsigned char unuse:6;
	}bits;
};//flag2;

#endif

⌨️ 快捷键说明

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