#ifndef UWATER_FRAME_FUNC_REPLAYSHANGHE_H
#define	UWATER_FRAME_FUNC_REPLAYSHANGHE_H

#include "sys_config.h"

#if PRODUCT_SHTCP

#define UP_DATA_BUF_SIZE_SH   128
//阀门控制-----商河水务,数据标识高低位调换-------------------------------------------------
#define VALVE_CONTROL_TCP_CTRL			        0x04           
#define ACK_VALVE_CONTROL_TCP_CTRL 			    0x84            
#define VALVE_CONTROL_TCP_DATA_ID0			    0xA0            
#define VALVE_CONTROL_TCP_DATA_ID1              0x17 


//数据上报
#define FM_TCP_UPLOAD_CTRL                   0x81
#define FM_TCP_UPLOAD_REPLAY_CTRL            0x22
#define FM_TCP_UPLOAD_DI0                    0x47
#define FM_TCP_UPLOAD_DI1                    0x02
/************************************************************************************************/

typedef struct 
{
	u8 head_site; //帧头位置
	u8 ctrl;
	u8 ack_ctrl;
	u8 len;
	u8 DI0;
	u8 DI1;
	u8 serial_num0;
	u8 serial_num1;
	u8 key_num;
	u8 end_site; //帧尾位置
	u8 check_len; //参与校验计算的数据长度
	u8 sta;  //GPRS加密状态0x80加密  0x40 主动发送(BIT2 = 0应答帧)
	u8 met_type;
} STRUCT_FRAME_SH;//存储数据帧重要内容

typedef union {
	struct 
	{
		u8 HeadBuf[4];// FE FE 68 20
		u8 Addr[7];//表地址
		u8 Ctrl;//控制字
		u8 Num;//数据长度
		u8 DataFlag[2];//数据标识
		u8 Ser;//序列号 
		u8 Data1Buf[4];//数据1
		u8 Data2Buf[24];
		u8 Data3Buf[28];
		u8 Cs;//68到data3
		u8 End;//结束符
	}data;
	u8 buf[80];
} STRU_TCP_UPLOAD_FRAME;

u8 crack_frame_SHTCP(u16 frame_lenth,u8 *frame_buffer);
u8 up_deal_code_sh(void);
void Frame_ResetDealState_SH(void);
void Frame_CreatCs_AckSH(u8* p_send_buf, u16* p_send_len);
	
void GetUploadDataResetState_SH(void);
u8 GetUploadDataCheckIdle_SH(void);
u8 GetUploadDataCheckTask_SH(void);
void GetUploadDataMachine_SH(u8 data_step, u8* p_send_buf, u16* p_send_len);
	
/**************************存储相关函数***************************************/
void DataStoreInit(void);
void DataStoreMachine(void);
u8 DataStoreIfIdle(void);
/*****************************************************************************/
#define MAIN_CONNECT_TYPE      NBIOT_CONNECT_COAP
#define MAIN_SEND_TYPE         SEND_TYPE_COAP
#define SLAVE_CONNECT_TYPE     NBIOT_CONNECT_UDP1
#define SLAVE_SEND_TYPE        SEND_TYPE_UDP1
//主上报15秒，副上报5秒
#define COAP_UPLOAD_WAIT_ACK_TIME  150   
#define UDP_UPLOAD_WAIT_ACK_TIME   50 
#define NB_ONLINE_KEEP_TIME  50

#endif

#endif	


