www.pudn.com > TCPmodbushy.rar > sysdef.h


/****************************************************************************** 
 * Project     : DP-210 
 * Module Name : ETC.C 
 * CPU Type    : C8051F350 
 * 
 * Description : 
 * 
 * History        Author     Version       Comment 
 * 2002.12.22       HY       V0.0         Original version 
 * 
 * Copyright (C) 2002 ZJY. All rights reserved. 
 ******************************************************************************/ 
 
#ifndef		__SYSDEF_H__ 
#define		__SYSDEF_H__ 
 
/************************************************************************ 
* Files Include 
*************************************************************************/ 
#include "c8051F340.h" 
#include "o:/normal.h" 
#include "o:/IPV4/lwip/ip_frag.h" 
#include "o:/lwip/tcp.h" 
#include "o:/lwip/dhcp.h" 
#include "o:/lwip/netif.h" 
#include "o:/netif/ethernetif.h" 
#include "o:/netif/OP_FlashOfCP220.h" 
#include "o:/netif/CP220x_REG.h" 
#include "o:/memory.h" 
#include "o:/lwip/pbuf.h" 
#include "o:/lwip/mem.h" 
#include "o:/lwip/udp.h" 
#include "o:/lwip/memp.h" 
//#define TESTDEBUG 
/****************************************************************************** 
* Port pin Config( include describe ) 
******************************************************************************/ 
#define	INT_PIN			P0_3				/* CP220 used P1.0\P0.3\P1.6\P1.7\P2\P3\P4 */ 
#define	CP220_RST_PIN	P1_0 
 
/****************************************************************************** 
* Master CLK 
******************************************************************************/ 
//HW 
#define		OscFreq				12288000		/* 12.288 MHz */ 
#define		Timer0Cycle			1				/* 1 ms	*/ 
#define		Timer2Cycle			50				/* 50 ms, largest set = 65*/ 
 
#define		Timer0InitValue		( 0xFFFF - ( OscFreq / 1000 * Timer0Cycle ) ) 
#define		Timer2InitValue		( 0xFFFF - ( OscFreq / 1000 / 12 * Timer2Cycle ) ) 
 
#define		Timer0SrvBank		2 
#define		Timer2SrvBank		2 
#define		INT0SrvBank			3 
#define		UART_INT_BANK1		1 
 
/****************************************************************************** 
* 
******************************************************************************/ 
#define	  LEISURE		0 
#define	  SENDDOWN		1 
//#define	  SENDUP		2 
#define	  WAIT			3 
 
#define	  END_RECEIVE   0 
#define   WAIT_RECEIVE	1 
#define	  START_SEND    2 
 
#define	  MASTER_NOT_SLAVE		0x01 
#define	  AUTO_NOT_MANUAL_IP	0x02 
#define	  SETPARA_NOT_WORK		0x04 
#define	  AUTOLAND				0x08 
#define	  T_BOX_SLAVE	0x01 
#define	  T_BOX_MASTER	0x00 
#define	  MS_flag		P1_1 
#define	  Get_ip_mode	P1_4 
#define	  Land_mode		P1_2 
#define	  Tbox_state	P1_3 
#define	  ParityNone	0 
#define   ParityOdd     1 
#define   DataBits_8	8 
#define   StopBits_2	2 
#define   SYS_FOSC      12000000 
 
// LED  
#define   LED_ON 		0 
#define	  LED_OFF		1 
#define	  COM_LED		P0_1 
#define   COM_ERROR_LED	P0_0 
#define	  IP_LED		P0_2  
//land function 
#define   LAND_SEVER_SUCCESS	0x01 
#define	  LAND_SEVER		 	0x02 
#define	  LAND_SEVER_END		0x03 
#define	  LANDTIME				30000 
#define   LAND_OUTTIME			100 
#define	  BUMPPACK_COUNT		3 
//net type 
#define	  PUBLIC 				0x01 
#define   CONE					0x02 
#define	  NO_SYMMETRIC			0x04 
#define	  SYMMETRIC				0x03 
#define   CONE_CONE				0x01 
#define	  CONE_PUBLIC			0x02 
#define	  CONE_SYMMETRIC		0x03 
#define   SYMMETRIC_CONE		0x04 
#define	  SYMMETRIC_PUBLIC		0x05 
#define	  SYMMETRIC_SYMMETRIC	0x06 
	 
#define	  UART_TIME		10 
#define	  QUERYIP_TIME	5000 
#define   QUERYIP_MAXCOUNT  5 
#define	  BYTE_WIDTH	8				/*new add */ 
#define	  STATIC_LIST   1 
#define   DYNAMIC_LIST	2	 
 
#define   COMM_RECEIVE_OUTTIME	3 
//485 
#define	  	DE	P1_5 
#define		DE_EnableReceive	0 
#define		DE_EnableTransmite	1 
/************************************************************************ 
parameter address  in flash 
*************************************************************************/ 
#define		STATIC_IP_ADDRESS			1024		 
#define		NETMASK_ADDRESS				1028 
#define		GW_ADDRESS					1032 
#define		DNS_ADDRESS					1036 
#define		DEFAULT_PORT_ADDRESS		1040 
#define		SEVER1_IP_ADDRESS			1048 
#define		SEVER1_PORT_ADDRESS			1052 
#define		SEVER2_IP_ADDRESS			1054 
#define		SEVER2_PORT_ADDRESS			1058 
#define		USE_NAME_ADDRESS			1060 
#define		USE_PASSWORD_ADDRESS		1190 
#define		STATIC_IP_STATION_ADDRESS	1240 
#define		BAUDRATE_ADDRESS			1500 
#define		PARITYTYPE_ADDRESS			1502 
#define		DATABITS_ADDRESS			1504 
#define		STOPBITS_ADDRESS			1506 
#define 	COMM_SEND_DELYTIME			1508 
#define 	PROTOCOL_TYPE				1510 
 
#define		MASTER_SHIELD_ADDRESS		1536 
#define		STATIC_SHIELD_ADDRESS		1792 
#define		STATIC_STATION_ADDRESS		MASTER_SHIELD_ADDRESS		// slave yong 
/*********************************************************************** 
parameter's length 
************************************************************************/ 
#define		STATIC_IP_LEN			4		 
#define		NETMASK_LEN				4 
#define		GW_LEN					4 
#define		DNS_LEN					4 
#define		DEFAULT_PORT_LEN		2 
#define		SEVER1_IP_LEN			4 
#define		SEVER1_PORT_LEN			2 
#define		SEVER2_IP_LEN			4 
#define		SEVER2_PORT_LEN			2 
#define 	USER_NAME_MAX_LEN		129		/* use '/0' as end's falg */ 
#define 	USER_PASSWORD_MAX_LEN	9		/* use '/0' as end's falg */ 
#define		STATIC_STATION_LEN		256 
#define		STATIC_IP_STATION_LEN	251				/*ги1+4)*50+1=251*/ 
#define		STATIC_SHIELD_LEN		256 
#define		AUTO_SEARCH_LEN			1 
#define		BAUDRATE_LEN			2 
#define		PARITYTYPE_LEN			1 
#define		DATABITS_LEN			1 
#define		STOPBITS_LEN			1 
#define		MASTER_SHIELD_LEN		256 
#define		COMM_SEND_DELYTIME_LEN	1 
#define		PROTOCOL_TYPE_LEN		1 
 
#define	 	STATION_IP_LISTSIZE		96					/*1+(1+4)*19*/ 
#define	 	DYNAMIC_IP_COUNT 		19 
#define     UDP_DATA_STR			9 
#define     TCP_DATA_STR			1 
#define		TRANS_COMMAND_LEN		9 
/*queue state flag*/ 
#define		SEND_EMPTY				0x00 
#define		SEND_FULL				0x02 
#define		SEND_NO_EMPTY			0x01 
#define		MAX_AFFAIR				31 
#define		MIN_AFFAIR				1 
 
#define		TCP_PROTOCOL			0x01 
#define		UDP_PROTOCOL			0x02 
typedef struct 
{ 
	uchar	uchProtocol; 
	ulong	ulIP; 
	uint	uiPort; 
	uint	selfPort; 
} UDP_INFO; 
#define		UDP_INFO_LEN			( sizeof( UDP_INFO ) ) 
 
typedef struct 
{ 
	uint	Trans_Identifier; 
#define		TCPMODBUS_PROTOCOL		0 
	uint	Protocol_Identifier; 
	uint	DataLen; 
} TCPMODBUS_HEAD; 
#define 	TCPMODBUS_LEN			( sizeof( TCPMODBUS_HEAD ) ) 
 
// main.c 
extern uchar	CurWorkState; 
char GetNum( struct tcp_pcb xdata * ipcb ); 
 
// master.c 
#define IP_CONFLICT_CHECK_TIME 		20	 /* 20*0.25s = 5S */ 
extern uchar IpConflictTime;								// (0.25*IpConflictTime)S 
 
extern uchar test[]; 
extern uchar data query_number; 
extern uchar	PreWorkState; 
extern uint data landTIME;			/* interval of each land*/ 
extern uchar data UART_out_time; 
extern uchar data FrameDataReceived; 
extern uchar idata	comm_send_protocol; 
extern uchar idata commDelyTime; 
extern uchar  idata	head_info[]; 
extern bit  data 	slave_send_flag; 
extern MEMB xdata *ip_station_list; 
void  s_query(void); 
void  m_uart( void ); 
void  input(void); 
void  s_uart( void ); 
void apply_process(void); 
uchar GetCurrentTboxState( void ); 
void Init_TBox_State( void ); 
void EndCurrentState( void ); 
ulong  get_receive_ip( uchar head ); 
void InitPara( void ); 
void init_dynamic_list( void ); 
 
// COMMU.C 
void InitCommuPort(ulong BaudRate, uchar Parity, uchar DataBits, uchar StopBits ); 
bit  RxByte( uchar data *RxData ); 
void TxByte( uchar TxData ); 
void StartRx( void ); 
void StartTx( void ); 
 
// modbus.c 
#define SndRcvBufferSize	256 
extern uchar xdata	CommuBuffer[]; 
extern uchar data RcvCommuLen; 
extern uchar data	SndCommuLen; 
extern uchar data	TransmittedLen; 
extern bit data master_com_flag; 
extern bit	data master_sendcommdata_flag; 
void 	RstRcvCommu( void ); 
void 	CommuRcv_INT( void ); 
void 	CommuSnd_INT( void ); 
void  	RSTsend(uchar len,uchar *pd); 
bit   	check_RCVdata(); 
void	switch_message( void ); 
void  	MODBUS_analyse(); 
void 	check_ip(void); 
bit 	CMD_OK(uchar cmd); 
 
// TCPIPmodbus.c 
extern uchar data	ERRtype; 
extern uchar idata	affair_head_info[]; 
void  	TCP_MODBUS_analyse( uchar head ); 
bit		land_apply( ulong sever_ip,uint sever_port,uchar idata *num); 
void 	queryIP( uchar station ); 
void  	answer_on_line(bit on_line_flag); 
void  	ip_apply(); 
void 	reply_query_ip( uchar pre_head ); 
void  	slave_replay_parameter( uchar xdata *DATA ); 
void 	master_reply_parameter( uchar xdata *DATA); 
void 	reply_read_ERR( uchar xdata *pd ); 
void  	reply_read_OK( uchar pre_head ); 
void 	reply_write_ERR( uchar xdata *pd ); 
void  	reply_write_OK( uchar pre_head ); 
void 	reply_erasure( uchar xdata *pd ); 
bit 	ERR_chk( uchar xdata *buff ); 
uchar 	GetUserNameLen( void ); 
uchar 	GetUserPassWordLen( void ); 
uchar GetWordLen( uint	iSetorAdd ); 
void 	reply_on_line(void); 
void	PrepareHostSenderTcpModbusHead( MEMB xdata *pd, uint Len ); 
void affirm_para( uchar xdata *pd ); 
 
// CRC.C 
uint CRC( uchar *head, uchar *tail ); 
bit CRC_OK( uchar *CRC_Code, uchar *head, uchar *tail ); 
 
// applyPLAY.C 
extern bit data com_flag; 
//extern uchar xdata station_IP_LIST[]; 
uchar get_TCP_data(void); 
uchar get_UDP_data( void ); 
uchar query_equipment_list(uchar equipment_number); 
void  make_request_message(uchar len, uchar xdata *pd); 
void  make_response_message(uchar len, uchar xdata *pd); 
void  UART_transmitted( uchar head ); 
bit   shield_station(uchar station_num); 
uchar station_IP(uchar station); 
void  add_station_IP(uchar station,ulong IP_value); 
void del_station_IP( uchar station ); 
ulong get_ip(uchar station ); 
uint apply_Transaction(void); 
uchar query_Transaction(uint number); 
void initTransaction(void); 
void del_Transaction(uint number); 
void  add_data(uchar len,uchar head,uchar xdata *pd,uchar offset); 
void PrepareCommReplyTcpModbusHead( MEMB xdata *pd, uint Len ); 
uchar Calcuate_SlaveStationNum( void ); 
void check_station_reply( void ); 
void PrepareHostSenderCommDataTcpModbusHead( MEMB xdata *pd, uint Len ); 
 
//send.c 
void send_data( uchar head, uchar idata *pd); 
void UDP_send_data(uchar head,ulong ip,uint port,uint self_port); 
void TCP_send_RECdata(uchar head,uchar QueneNO); 
void TCP_send_data(uchar head,ulong ip); 
void send_to_serve1(uchar head); 
void send_to_serve2(uchar head); 
void send_com_data( uchar head, uchar idata *pd ); 
// Init.c 
void InitCPU( void ); 
void InitLwip( void ); 
void InitLED( void ); 
 
// timer.c 
extern	uchar data Timer5ms; 
extern 	uchar  	data 	DipTime; 
extern  bit Dip_flag; 
extern uchar data DIPstate; 
void	InitTimer0( void ); 
void	InitTimer2( void ); 
void	wait_ms( uint ms ); 
void	reset_timeout( uint ms ); 
uchar	timeout_expired( void ); 
void	LWIP_Relative_Tmr( void ); 
 
// F34x_CP220.c 
extern 	uchar data RcvedNum; 
void 	CP220x_RST_Low( void ); 
void 	CP220x_RST_High( void ); 
uchar 	Get_RST_State( void ); 
 
//p2p.c 
#define NO_TRANS		0x00 
#define	SERVE1_TRANS	0x01 
#define	SERVE2_TRANS	0x02 
extern uchar data land_sever1_flag; 
extern uchar data land_sever2_flag; 
extern uchar data net_type; 
extern uchar idata net_group_type; 
extern bit	 bumppack_flag; 
extern bit	  send_net_type_flag; 
extern bit    extend_trans_flag; 
extern uchar data   bumppack_times; 
void  p2p_cmdOK_process(uchar subop,uchar xdata *pd); 
void  p2p_cmdERR_process(uchar subop); 
void land_answer_process(uchar xdata *pd); 
void  judge_net_type(void); 
void net_type_function(uchar serve_num); 
void land_function(void); 
uint  land_sever1( void ); 
uint  land_sever2( void ); 
uint send_bumppack(uchar sever_num); 
void serve_trans_message_process(uchar head); 
void P2Ptransh_process(uchar head); 
void answer_P2Ptransh(ulong dst_ip,uint dst_port,uint number,uint self_port); 
ulong get_trans_ip(uchar head); 
uint get_trans_port(uchar head); 
uchar get_trans_net_type(uchar head); 
void PrepareReplyTransHead(uchar head,uint Len,uchar xdata *pd); 
/****************************************************************************** 
* End of File 
******************************************************************************/ 
#endif