#ifndef UWATER_FRAME_FUNC_REPLAY_SY_H #define UWATER_FRAME_FUNC_REPLAY_SY_H #include "sys_config.h" #if PRODUCT_SY #include "UWater_Frame_app.h" /**************************************20211025沈阳订单新增规约********************************************/ //上报冻结数据 //水表向平台端主动发送数据规约 //上传冻结数据(101,应答1) 上报未冻结数据、水表状态、报警等信息 #define FM_UPLOAD_FROZEN_DATA_CTRL 0x65 //101 #define FM_UPLOAD_FROZEN_DATA_REPLY_CTRL 0x01 //1 //上报周期数据(102,应答2) 上报周期采集的数据 #define FM_UPLOAD_CYCLE_DATA_CTRL 0x66 //102 #define FM_UPLOAD_CYCLE_DATA_REPLY_CTRL 0x02 //2 //突发报警上传(103,应答3) 在发生报警等级为1的报警事件时随时上传 #define FM_SUDDEN_ALARM_UPLOAD_CTRL 0x67 //103 #define FM_SUDDEN_ALARM_UPLOAD_REPLY_CTRL 0x03 //3 //水表应答平台请求规约 //参数设置(6,应答106) 设置上传时间、开关阀门、报警参数等 #define FM_PARAMENTER_SETTING_CTRL 0x06 //6 #define FM_PARAMENTER_SETTING_REPLY_CTRL 0x6A //106 //参数查询(7,应答107) 在发生报警等级为1的报警事件时随时上传 #define FM_PARAMENTER_QUERY_CTRL 0x07 //7 #define FM_PARAMENTER_QUERY_REPLY_CTRL 0x6B //107 //冻结数据查询(8,应答108) 查询日冻结数据、年冻结数据、月冻结数据 #define FM_FROZEN_DATA_QUERY_CTRL 0x08 //8 #define FM_FROZEN_DATA_QUERY_REPLY_CTRL 0x6C //108 //周期数据查询(9,应答109) 查询最近7天的周期数据 #define FM_CYCLE_DATA_QUERY_CTRL 0x09 //9 #define FM_CYCLE_DATA_QUERY_REPLY_CTRL 0x6D //109 //报警历史数据查询(10,应答110) 查询历史报警数据 #define FM_ALARM_HISTORY_DATA_QUERY_CTRL 0x0A //10 #define FM_ALARM_HISTORY_DATA_QUERY_REPLY_CTRL 0x6E //110 //清空数据(51,应答151) 清空冻结数据、历史数据、报警数据 #define FM_CLEAR_ALL_DATA_CTRL 0x33 //51 #define FM_CLEAR_ALL_DATA_REPLY_CTRL 0x97 //151 //重启、恢复出厂设置(52,应答152) #define FM_RESTORE_FACTORY_SETTING_CTRL 0x34 //52 #define FM_RESTORE_FACTORY_SETTING_REPLY_CTRL 0x98 //152 //调试指令(71,应答171) 由厂家自行定义的报文,数据域由厂家自行设置 #define FM_DEBUG_INSTRUCTION_CTRL 0x47 //71 #define FM_DEBUG_INSTRUCTION_REPLY_CTRL 0xAB //171 typedef union { struct { u8 data0; u8 data1; } datas_map; u8 data_buf[2]; u16 datas; } SY_UNION_2U8TOU16; typedef struct { u8 head_site; //帧头位置 u8 ctrl; u8 ack_ctrl; SY_UNION_2U8TOU16 len; //沈阳规约数据长度固定2字节16进制,低字节在前,高字节在后 u8 end_site; //帧尾位置 u8 check_len; //参与校验计算的数据长度 u8 sta; //GPRS加密状态0x80加密 0x40 主动发送(BIT2 = 0应答帧) u8 met_type; //沈阳规约将表计类型定义为规约类型,定为0X02 u8 serial_num0; //序列号 } STRUCT_FRAME_SY;//存储数据帧重要内容 u8 up_deal_code_sy(void); u8 crack_frame_SY(u16 frame_lenth,u8 *frame_buffer); void Frame_ResetDealState_Shenyang(void); void Sy_Frame_nb_read_ack(u8* p_send_buf, u16* p_send_len); /************************************************上报相关**********************/ void GetUploadDataResetState_ShenYangUDP(void); u8 GetUploadDataCheckIdle_ShenYangUDP(void); u8 GetUploadDataCheckTask_ShenYangUDP(void); void GetUploadDataMachine_ShenYangUDP(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_UDP1 #define MAIN_SEND_TYPE SEND_TYPE_UDP1 #define SLAVE_CONNECT_TYPE NBIOT_CONNECT_UDP2 #define SLAVE_SEND_TYPE SEND_TYPE_UDP2 //主上报10秒,副上报5秒 #define COAP_UPLOAD_WAIT_ACK_TIME 100 #define UDP_UPLOAD_WAIT_ACK_TIME 50 #define NB_ONLINE_KEEP_TIME 50 #endif #endif