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