P5UWaterBuXiugang/app/UWater_Frame/UWater_frame_app.h

751 lines
30 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
#ifndef UWATER_FRAME_APP_H
#define UWATER_FRAME_APP_H
#ifdef __cplusplus
extern "C" {
#endif
#include "type.h"
#include "UWater_gp22_driver.h"
#include "UWater_uart_driver.h"
#include "UWater_rtcc_driver.h"
#pragma pack(1) //1<>ֽڶ<D6BD><DAB6><EFBFBD>
/**
Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʾ<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȱ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>4λ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bit31 bit30 bit29 bit28
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>ˮ3-<EFBFBD><EFBFBD>ˮ4----]
**/
#define BOOTLOADER_VERSION 0x3030314E //Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>N1.00<EFBFBD>AASCALL
#define FM_HEAD_MARK 0x68 //֡ͷ
#define MET_TYPE 0x10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0x10<31><30>ˮ<EFBFBD><CBAE>
#define MET_TYPE_TCP 0x20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define MET_TYPE_SY 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Լ<EFBFBD>汾Ϊ02H 20211025
#define FM_END_MARK 0x16 //֡β
#define MAX_NB 500 //NB<4E><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define FM_MAX_BUF_NUM 500 //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
/*<2A><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2020-07-08*/
//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ֺ궨<D6BA><EAB6A8>
#define FLOW_COEFFICIENT_BUF_NUM 18 //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
#define LOW_TYPE 0x77
#define MIDDLE_TYPE 0x88
#define LARGE_TYPE 0x99
#define ALL_TYPE 0xAA
#define FLOW_COEFFICIENT_MAX 72089
#define FLOW_COEFFICIENT_MIN 58982
//<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
#define FIRST_POWER_ON_FLAG 0X55
#define EEP_FRAME_BASE_ADDR 0x00
#define EEP_FRAME_FIRST_POWER_ADDR (EEP_FRAME_BASE_ADDR + 0) //1byte //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־<EFBFBD><D6BE>ַ
#define EEP_FRAME_STARTUSING_ADDR (EEP_FRAME_FIRST_POWER_ADDR + 1) //1byte //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־1<D6BE>ֽ<EFBFBD>
#define FRAME_NBIot_FREQVAL (EEP_FRAME_STARTUSING_ADDR + 1) //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5>5<EFBFBD>ֽ<EFBFBD> add by wm 2017.07.19
#define FRAME_NBIot_IP (FRAME_NBIot_FREQVAL+5) //<2F><><EFBFBD><EFBFBD>ip 4<>ֽ<EFBFBD>
#define FRAME_NBIot_PORT (FRAME_NBIot_IP+4) //<2F><><EFBFBD>ö˿<C3B6> 2<>ֽ<EFBFBD>
#define FRAME_NBIot_REPORTSTART (FRAME_NBIot_PORT+2) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1> 6<>ֽ<EFBFBD>
#define FRAME_NBIot_REPORTEND (FRAME_NBIot_REPORTSTART+6) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 6<>ֽ<EFBFBD>
#define FRAME_NBIot_LENGTH (FRAME_NBIot_REPORTEND+6) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>С<EFBFBD><D0A1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD>
#define EEP_RETRY_TIMES_ADDR (FRAME_NBIot_LENGTH + 2) //<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
#define FRAME_NBIot_STARTTIME (EEP_RETRY_TIMES_ADDR+1) //<2F><><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC>ϱ<EFBFBD>ʱ<EFBFBD><CAB1> 9<>ֽ<EFBFBD>
#define FRAME_NBIot_HIGHFLOW (FRAME_NBIot_STARTTIME+9) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 4<>ֽ<EFBFBD>
#define FRAME_VALVE_PRA (FRAME_NBIot_HIGHFLOW+4) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> 4<>ֽ<EFBFBD>
#define FRAME_VALVE_EMERGENCY_FLOW (FRAME_VALVE_PRA +4) //Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2<>ֽ<EFBFBD>
#define FRAME_NBIot_fre (FRAME_VALVE_EMERGENCY_FLOW+2) //Ƶ<><C6B5>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD>
#define FRAME_NBIot_APN (FRAME_NBIot_fre+2) //APN 20<32>ֽ<EFBFBD>
#define FRAME_NBIot_KEY (FRAME_NBIot_APN+20) //<2F><>ͨ<EFBFBD><CDA8>Կ, 16<31>ֽ<EFBFBD>
#define EEP_FRAME_MAC_ADDR (FRAME_NBIot_KEY + 16) //7bytes //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>׵<EFBFBD>ַ
#define EEP_FRAME_SER_NUM_ADDR (EEP_FRAME_MAC_ADDR + 7) //7bytes //<2F><><EFBFBD>к<EFBFBD><D0BA>׵<EFBFBD>ַ
#define EEP_FRAME_MET_ADDR (EEP_FRAME_SER_NUM_ADDR + 7) //7bytes //ͨѶ<CDA8><D1B6>ַ<EFBFBD>׵<EFBFBD>ַ
#define EEP_FRAME_SOLIDIFY_MAC_ADDR (EEP_FRAME_MET_ADDR + 7) //1byte //<2F>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>־<EFBFBD><D6BE>ַ
#define EEP_FRAME_BOOTLOADER_INFO_ADDR (EEP_FRAME_SOLIDIFY_MAC_ADDR + 1) //5bytes //Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>׵<EFBFBD>ַ
#define EEP_FRAME_ENABLE_BAK_KEY_ADDR (EEP_FRAME_BOOTLOADER_INFO_ADDR + 5) //1bytes //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF>־<EFBFBD><D6BE>ַ
#define EEP_FRAME_LAST_KEY_NUM (EEP_FRAME_ENABLE_BAK_KEY_ADDR + 1) //1byte //<2F><><EFBFBD><EFBFBD>num<75><6D><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>ͨѶ<CDA8><D1B6>Կnum
#define EEP_FRAME_TEMPERATURE_COEFFICIENT_ADDR (EEP_FRAME_LAST_KEY_NUM + 1) //8bytes //<2F><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>׵<EFBFBD>ַ
#define EEP_FRAME_FLOW_COEFFICIENT_ADDR (EEP_FRAME_TEMPERATURE_COEFFICIENT_ADDR + 8) //24bytes //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>׵<EFBFBD>ַ
#define EEP_FRAME_VERIFICATION_FUNCTION_ADDR (EEP_FRAME_FLOW_COEFFICIENT_ADDR + 24) //1byte //<2F><><EFBFBD>ü춨<C3BC><ECB6A8><EFBFBD>ܵ<EFBFBD>ַ
#define EEP_FRAME_INFRARED_FUNCTION_ADDR (EEP_FRAME_VERIFICATION_FUNCTION_ADDR + 1) //1byte //<2F><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ܵ<EFBFBD>ַ
#define EEP_FRAME_FUNCCFGBYTES_ADDR (EEP_FRAME_INFRARED_FUNCTION_ADDR + 1) //32bytes //<2F><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
#define EEP_FRAME_START_FLOW_ADDR (EEP_FRAME_FUNCCFGBYTES_ADDR + 32) //2byte //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD>---20191111<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define EEP_FRAME_COUNTER_CURRENT_FLOW_ADDR (EEP_FRAME_START_FLOW_ADDR + 2) //2byte //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD>---20191111<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define EEP_FRAME_SAMPLING_FREQUENCY_ADDR (EEP_FRAME_COUNTER_CURRENT_FLOW_ADDR + 2) //1byte //<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>1<EFBFBD>ֽ<EFBFBD>---20191113<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define EEP_FRAME_SAMPLING_BUF_LEN_ADDR (EEP_FRAME_SAMPLING_FREQUENCY_ADDR + 1) //1byte //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С1<D0A1>ֽ<EFBFBD>---20191113<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
#define EEP_FRAME_STORAGE_FREQUENCY (EEP_FRAME_SAMPLING_BUF_LEN_ADDR + 1) //1byte //<2F>ܼ<EFBFBD><DCBC><EFBFBD><E6B4A2><EFBFBD><EFBFBD>(0:30s,1:1min,2:2min,3:3min...)
#define EEP_FRAME_JX_SAMPLING_FREQUENCY_ADDR (EEP_FRAME_STORAGE_FREQUENCY + 1) //2byte //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>(byte1,<2C><><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>Ƶ<EFBFBD><C6B5>;byte2,<2C><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD>Ƶ<EFBFBD><C6B5>)
#define EEP_FRAME_JX_PSM_PWDOWN_ADDR (EEP_FRAME_JX_SAMPLING_FREQUENCY_ADDR +2) //1byte //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼNBģ<42><C4A3>PSM<53><4D><EFBFBD>ϵ<EFBFBD>ģʽѡ<CABD><D1A1>(0,psm;1,power down)
#define EEP_FRAME_NB_PARA_ADDR (EEP_FRAME_JX_PSM_PWDOWN_ADDR + 1) //4byte //<2F><><EFBFBD><EFBFBD>NB<4E><42><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
#define FRAME_NBIot_BUBAO_FLAG (EEP_FRAME_NB_PARA_ADDR+4) //6byte //<2F><>¼<EFBFBD><C2BC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>Ӧһ<D3A6><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>;<3B>Լ<EFBFBD><D4BC><EFBFBD>д<EFBFBD><D0B4>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> 6<>ֽ<EFBFBD>
#define FRMAE_REMAIN_EMERGENCY_FLOW (FRAME_NBIot_BUBAO_FLAG+6) //4byte ʣ<><CAA3>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
#define EEP_BLE_PARA_VOLTAGE (FRMAE_REMAIN_EMERGENCY_FLOW+4) //4byte Ƿѹ<C7B7><D1B9>ֵ4<D6B5>ֽ<EFBFBD>
#define EEP_FRMAE_BATTERY_ENERGY (EEP_BLE_PARA_VOLTAGE+4) //18byte <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA> FRAME_MET_INFO <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
#define EEP_GP30_BASE_ADDR 0X100
/*#define DIFTOF_CALIBRATION_FLAG_ADDR 0X150 //2021,04,<2C><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<D0A3><D7BC>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0xA1B2C3D4E5F6A7B8<42><38>ʾУ׼<D0A3><D7BC>
#define DIFTOF_CALIBRATION_VALUE_ADDR DIFTOF_CALIBRATION_FLAG_ADDR +8 //2021,04,<2C><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼ֵ4<D6B5>ֽ<EFBFBD>*/
#define EEP_RTCC_APP_USE_ADDR 0X180
#define FRAME_FLOW_COEFFICIENT_ADDR 0x200 //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģϵ<C4A3><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD>5*11*4<>ֽ<EFBFBD>
#define EEP_BOOTLOAD_START 0X300
#define EEP_MCU_TYPE EEP_BOOTLOAD_START //mcuƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
#define EEP_MCU_MODEL (EEP_MCU_TYPE+1) //mcu<63>ͺ<EFBFBD>,1 <20>ֽ<EFBFBD>
#define EEP_PRODUCT_MODEL (EEP_MCU_MODEL+1) //<2F><>Ʒ<EFBFBD>ͺ<EFBFBD>,1<>ֽ<EFBFBD>
#define EEP_HARDWARE_VERSION (EEP_PRODUCT_MODEL+1) //Ӳ<><D3B2><EFBFBD>汾,1<>ֽ<EFBFBD>
#define EEP_SOFT_VERSION (EEP_HARDWARE_VERSION+1) //<2F><><EFBFBD><EFBFBD><EFBFBD>汾,4<>ֽ<EFBFBD>
#define EEP_UPDATE_NUM (EEP_SOFT_VERSION+4) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>,4<>ֽ<EFBFBD>
#define EEP_UPDATE_CHECK (EEP_UPDATE_NUM+4) //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>,2<>ֽ<EFBFBD>
#define EEP_UPDATE_VER (EEP_UPDATE_CHECK+2) //<2F><><EFBFBD><EFBFBD><EFBFBD>汾,2<>ֽ<EFBFBD>
#define EEP_UPDATE_FLAG (EEP_UPDATE_VER+2) //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־,1<>ֽ<EFBFBD>
#define EEP_UPDATE_SOURSE (EEP_UPDATE_FLAG+1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ,1<>ֽ<EFBFBD>
#define EEP_UPDATE_PKNUM (EEP_UPDATE_SOURSE+1) //<2F><><EFBFBD><EFBFBD>,2<>ֽ<EFBFBD>
#define EEP_UPDATE_RSSI (EEP_UPDATE_PKNUM+2) //<2F>ź<EFBFBD>ǿ<EFBFBD><C7BF>,1<>ֽ<EFBFBD>
#define EEP_UPDATE_UDP_IP (EEP_UPDATE_RSSI+1) //4bytes,UDP<44><50><EFBFBD><EFBFBD>IP<49><50>ַ
#define EEP_UPDATE_UDP_PORT (EEP_UPDATE_UDP_IP+4) //2bytes,UDP<44><50><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
#define EEP_BASE_VALVE (EEP_BOOTLOAD_START+40) //<2F><><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD>,2<>ֽ<EFBFBD> 20180903
#define FRAME_FLOW_LOW_COEFFICIENT_ADDR 0x340 //72<37>ֽ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ 2020-07-08
#define FRAME_FLOW_MIDDLE_COEFFICIENT_ADDR (FRAME_FLOW_LOW_COEFFICIENT_ADDR + 24)//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>LOW<4F><57>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>24<32><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ڴ洢20~35<33><35><EFBFBD><EFBFBD>ֵ
#define FRAME_FLOW_HIGH_COEFFICIENT_ADDR (FRAME_FLOW_MIDDLE_COEFFICIENT_ADDR + 24)//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>MIDDLE<4C><45>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>24<32><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ڴ洢35<33><EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define EEP_RTCC_APP_HISTORY_ADDR 0x440 //0x440~0x823
#define EEP_SOE_ADDR 0x1000 //SOE<4F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ַ
#define FRAME_NBIot_HISTORY_READ_ADD 0x2000 //<2F><EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ַ
#define FRAME_QUANZHOU_STORE_ADD 0x4000 //Ȫ<><C8AA><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ݴ洢<DDB4><E6B4A2>ַ
#define FRAME_SHENYANG_STORE_ADD 0x7300 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ݴ洢<DDB4><E6B4A2>ַ
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģ<EFBFBD><C4A3><EFBFBD>ֺ궨<D6BA><EAB6A8>
#define MULT_COEFFICIENT_BUF_NUM 55 //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģϵ<C4A3><CFB5><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
#define COEFFICIENT_MAX (float)1000 //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģϵ<C4A3><CFB5><EFBFBD>ĺϷ<C4BA><CFB7><EFBFBD><EFBFBD><EFBFBD>ֵ
#define COEFFICIENT_MIN (float)-1000 //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģϵ<C4A3><CFB5><EFBFBD>ĺϷ<C4BA><CFB7><EFBFBD>Сֵ
typedef union
{
UNION_4U8TOU32 float_storage_format;
float float_datas;
} UNION_FLOAT_STORAGE;
typedef union
{
uint8_t value[4];
uint32_t value_u32;
float flt;
} TYP_FLOW_COEFFICIENT;
typedef union {
struct
{
u8 type; //<2F><><EFBFBD><EFBFBD>/<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEX<45><58><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 period; //<2F>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEX<45><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><ECB4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶα<D6B6>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><ECA1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶα<D6B6>ʾÿ<CABE>µļ<C2B5><C4BC><EFBFBD>
bcd hour; //<2F>ϴ<EFBFBD>ʱ<EFBFBD>䣬BCD<43><EFBFBD><EBA3AC>ʾʱ<CABE><CAB1>
bcd minute; //<2F>ϴ<EFBFBD>ʱ<EFBFBD>䣬BCD<43><EFBFBD><EBA3AC>ʾ<EFBFBD>֡<EFBFBD>
bcd second;
}s;
u8 buf[5];
} Time_upload;//<2F><>ʱ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
typedef union
{
struct
{
u8 valve_state; //<2F><><EFBFBD><EFBFBD>״̬
u8 valve_err; //<2F><><EFBFBD><EFBFBD><EFBFBD>
u8 valve_total_time; //<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>ʱ<EFBFBD><CAB1>
u8 valve_AD; //<2F><>תADֵ
};
u8 byte[4];
} IES_VALVE_PARAS; //<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
typedef union
{
struct
{
u8 valve_up_times_pre; //<2F><>Լ<EFBFBD><EFBFBD><E8B6A8>Ƶ<EFBFBD><C6B5>-<2D>ط<EFBFBD><D8B7>ϱ<EFBFBD>
u8 valve_up_times_total; //<2F><>Լ<EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>-<2D>ط<EFBFBD><D8B7>ϱ<EFBFBD>
u8 valve_up_times_realtime; //ʵʱ<CAB5>ϱ<EFBFBD><CFB1>Ĵ<EFBFBD><C4B4><EFBFBD>-<2D>ط<EFBFBD><D8B7>ϱ<EFBFBD>
u8 valve_auto_check; //ÿ<>·<EFBFBD><C2B7><EFBFBD><EFBFBD>Լ칦<D4BC><ECB9A6><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AA<41><41>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
u8 reserv;//Ԥ<><D4A4><EFBFBD>ֽ<EFBFBD>
};
u8 byte[5];
} IES_VALVE_UP_TIMES; //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
extern TYP_FLOW_COEFFICIENT cal_coefficient[MULT_COEFFICIENT_BUF_NUM];
extern const float default_coefficient[MULT_COEFFICIENT_BUF_NUM];
extern UNION_4U8TOU32 cal_flow_coefficient[FLOW_COEFFICIENT_BUF_NUM];//<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
extern const u32 default_flow_coefficient[FLOW_COEFFICIENT_BUF_NUM];//
typedef struct
{
u8 ble_tx_power;
u8 ble_adv_fre;
u8 ble_con_para;
u8 ble_scan_times;
u8 password_enable;
} BLE_FUNC_SW;
typedef struct
{
mtype32_ total_use_sum_times_sec;
mtype32_ bat_surplus;
mtype32_ use_sum_times_sec;
mtype32_ nb_use_sum_times_sec;
u16 nb_upload_happen_num;
u16 valve_use_sum_times_sec;
float ee_remain_para_energy_life;
}STR_RUN_INFO;
typedef struct
{
u8 first_power_flg; //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־---------------------1
u8 start_using_flg; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־-----------------------1
Time_upload Time_upload_2006; //<2F><>ʱ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>//<2F>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5>5--------------------------5<><35><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EBB2BB>
u8 server_ip[4]; //ip<69><70>ַ4----------------------------4
UNION_2U8TOU16 server_port; //<2F>˿ں<CBBF>2----------------------------2
u8 report_period_start[6]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>6----------6
u8 report_period_end[6]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>6----------6
UNION_2U8TOU16 report_step_len; //UNION_2U8TOU16 report_step_len;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ֵ2-----------------2// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><>λ<EFBFBD><EFBFBD><EBA3AC>Χ15~43.<2E><>ʱ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><E5B7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><CAB1> + <20><><EFBFBD>ź<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + 60<36>
u8 report_retry_times; //u8 report_retry_times; //<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> 1 --------------------1
u8 report_start_time[9]; //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ?9-----------9
UNION_4U8TOU32 high_flow_alarm; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ4-------------------4
IES_VALVE_PARAS ies_valve_paras;//<2F><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> u8 ss_bak[6];//Ԥ<><D4A4>6<EFBFBD><36><EFBFBD>ֽ<EFBFBD>------------------------4
UNION_2U8TOU16 ies_pulse_emergency; //Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>----------------------2
UNION_2U8TOU16 report_fre; //Ƶ<><C6B5>2-------------------------------2
u8 apn[20]; //APN, 20 ------------------------20
u8 key[16]; //<2F><>ͨ<EFBFBD><CDA8>Կ---------------------------16
u8 mac_addr[7]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ----------------------------7
u8 ser_num[7]; //<2F><><EFBFBD>к<EFBFBD>------------------------------7
u8 met_addr[7]; //ͨѶ<CDA8><D1B6>ַ----------------------------7
u8 solidify_mac_addr_flg; //<2F>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʶ---------------------1
IES_VALVE_UP_TIMES ies_valve_up_times;//<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>-----------------5
u8 enable_bak_key; //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Կ--------------------------1
u8 last_key_num; //<2F>´<EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>Կnum---------------------1
UNION_4U8TOU32 temperature_coefficient0; //<2F><EFBFBD>ϵ<EFBFBD><CFB5>0---------------------4
UNION_4U8TOU32 temperature_coefficient1; //<2F><EFBFBD>ϵ<EFBFBD><CFB5>1---------------------4
UNION_4U8TOU32 flow_coefficient_small; //С<><D0A1><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>----------------------4//0x00010000
UNION_4U8TOU32 flow_coefficient_middle0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>0-------------------4//0x00010000
UNION_4U8TOU32 flow_coefficient_middle1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>1-------------------4//0x00010000
UNION_4U8TOU32 flow_coefficient_middle2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>2-------------------4//0x00010000
UNION_4U8TOU32 flow_coefficient_middle3; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>3-------------------4//0x00010000 //20161021
UNION_4U8TOU32 flow_coefficient_large; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>----------------------4//0x00010000
u8 enable_verification_function; //<2F><><EFBFBD>ü춨<C3BC><ECB6A8><EFBFBD><EFBFBD>--------------------------1//0x5A
u8 enable_infrared_function; //<2F><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><E2B9A6>------------------------------1//0x5A
u8 func_cfg_bytes[32]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>------------------------------32
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ-20191108-<2D><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>4<EFBFBD>ֽڣ<D6BD>
UNION_2U8TOU16 start_flow;//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD>--------------------------------2
UNION_2U8TOU16 counter_current_flow; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----------------------2
u8 sampling_frequency; //<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>----------------------------------------1
u8 buf_length; // BUFF--------------------------------------------------1
u8 storage_frequency;//<2F>ܼ<EFBFBD><DCBC><EFBFBD><E6B4A2><EFBFBD><EFBFBD>--------------------------------------1
u8 jx_sampling_frequency[2];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>---------------------------2
u8 jx_psm_pwdown;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼNBģ<42><C4A3>PSM<53><4D><EFBFBD>ϵ<EFBFBD>ģʽѡ<CABD><D1A1>------------------------1
UNION_2U8TOU16 Upload_again_interval_time;//UNION_2U8TOU16 nb_para_retry_delay; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
UNION_2U8TOU16 nb_para_login_ask_times; //<2F><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>ѯcereg<65><67><EFBFBD><EFBFBD>)
UNION_4U8TOU32 Supplemental_send_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>¼һ<C2BC><D2BB>bit<69><74><EFBFBD><EFBFBD><E0B2B9>30<33><30><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
u8 histroy_r;//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵĶ<DDB5>ָ<EFBFBD><D6B8> <20><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢ָ<E6B4A2><D6B8>
u8 histroy_w;//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵ<EFBFBD>дָ<D0B4><D6B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
UNION_4U8TOU32 ies_pulse_remain; //Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Ӧ<EFBFBD><EFBFBD><EFB5BD>ֵ<EFBFBD><D6B5>4
u8 voltage_low[4];//Ƿѹ<C7B7><D1B9>ֵ
STR_RUN_INFO run_information_object;
}FRAME_MET_INFO;
typedef struct
{
union
{
struct
{
u8 transducer_aging : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>
u8 flow_err : 1; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>>Q4<51><34><EFBFBD><EFBFBD><Q1
u8 rtcc_time_err : 1; //RTCCʱ<43><CAB1><EFBFBD>
u8 nbsend_err : 1; //GPxx<78>
u8 nbrec_err :1;
u8 water_overheating : 1; //ˮ<>³<EFBFBD><C2B3><EFBFBD><EFBFBD>¶ȵȼ<C8B5><C8BC><EFBFBD>Χ
u8 gp22_commun_fail:1;//GP22ͨ<32><CDA8>ʧ<EFBFBD><CAA7>
u8 nouse1 : 1;
} stat0bits;
u8 stat0;
};
union
{
struct
{
u8 reverse : 1; //<2F><>ת
u8 low_flow_rate : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 none_water : 1; //<2F>ܵ<EFBFBD><DCB5><EFBFBD>ˮ
u8 diftof_calibration_switch : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD>ر<EFBFBD>־
u8 transducer_check_abnormal : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>־
u8 low_battery_voltage : 1; //<2F><><EFBFBD><EFBFBD>Ƿѹ
u8 valve_state : 2; //<2F><><EFBFBD><EFBFBD>״̬
} stat1bits;
u8 stat1;
};
union
{
struct
{
u8 met_type: 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ͨ<EFBFBD><CDA8>
u8 nouse : 7;
} stat2bits;
u8 stat2;
};
union
{
struct
{
u8 met_type : 1;
u8 nbrec_err :1;
u8 gp22_commun_fail:1;//GP22ͨ<32><CDA8>ʧ<EFBFBD><CAA7>
u8 rtcc_time_err : 1; //RTCCʱ<43><CAB1><EFBFBD>
u8 nbsend_err : 1; //GPxx<78>
u8 water_overheating : 1; //ˮ<>³<EFBFBD><C2B3><EFBFBD><EFBFBD>¶ȵȼ<C8B5><C8BC><EFBFBD>Χ
u8 flow_err : 1; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>>Q4<51><34><EFBFBD><EFBFBD><Q1
u8 transducer_aging : 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>
} stat3bits;
u8 stat3;
};
union
{
struct
{
u8 nouse : 8;
} stat4bits;
u8 stat4;
};
} MET_STATE; //״̬<D7B4><CCAC>
typedef struct
{
union
{
struct
{
u8 reverse : 1; //<2F><>ת
u8 low_flow_rate : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 valve_state : 2; //<2F><><EFBFBD><EFBFBD>״̬
u8 remain_warning:1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 release : 2; //<2F><><EFBFBD><EFBFBD>
u8 ntc_state:1; //NTC<54><EFBFBD><ECB3A3>־
} statTcp1bits;
u8 statTCP1;
};
union
{
struct
{
u8 remain_state : 1; //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
u8 low_power : 1; //<2F><><EFBFBD><EFBFBD>Ƿѹ<C7B7><D1B9><EFBFBD><EFBFBD>
u8 release : 2; //<2F><><EFBFBD><EFBFBD>
u8 amplitude : 4;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
} statTcp2bits;
u8 statTCP2;
};
} TCP_STATE; //״̬<D7B4><CCAC>
typedef union //ǿ<><C7BF>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
u32 gp22_u32;
float gp22_float;
} Fram_To_Float;
typedef struct
{
u8 data_sourse; //<2F><>ϢԴ<CFA2><D4B4>0<EFBFBD><30>uart <20><> 1<><31>rf<72><66>
u8 enc_reply_flg; //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>1<EFBFBD><31>Ч
u8 enc_tmp_addr[7]; //<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ܵ<EFBFBD>ַ<EFBFBD>ݴ棬<DDB4><E6A3AC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
u8 rev_key_num; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>numֵ
} STRUCT_FLAG; //<2F>ڲ<EFBFBD><DAB2><EFBFBD>־λ
/************************************************<2A><>Լ<EFBFBD><D4BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**********************************/
typedef struct
{
u8 set_verification_msg; //<2F><><EFBFBD>춨0
u8 clear_realtime_data_msg; //<2F><>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>1
u8 clear_work_time_msg; //<2F><><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>2
u8 bootloader_msg; //Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
u8 measure_hydrostatic_jet_lag_msg; //<2F>⾻ˮʱ<CBAE><CAB1>4----------û<><C3BB>
u8 clear_history_data_msg; //<2F><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>5
u8 channel_change_msg; //<2F>ŵ<EFBFBD><C5B5>л<EFBFBD>6-------------------------û<><C3BB>
u8 start_188fm_route_msg;//188<38><38>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>7----------------û<><C3BB>
u8 change_link_addr_msg; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>ַ8----------------û<><C3BB>
u8 change_route_mettype_msg; //<2F><><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>9----------------û<><C3BB>
u8 check_active_time_msg; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><D4BE>msg<73><67><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ߵݴ<DFB5>ʱ<EFBFBD><EFBFBD><E4A1A2><EFBFBD><EFBFBD>ʱ<EFBFBD>α䣩10
u8 calibrate_time_rfapp_msg; //Уʱmsg<73><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rtapp<70><70>λ״̬<D7B4><CCAC><EFBFBD><EFBFBD>־<EFBFBD><D6BE>11
u8 calibrate_rtc_msg; //RTCУ׼msg 12
u8 valve_ctrl_msg; //<2F><><EFBFBD><EFBFBD>msg 13------------------û<><C3BB>
u8 static_measure_init_msg; //<2F><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>msg 14----------û<><C3BB>
u8 low_power_msg; //<2F><><EFBFBD>Ƶ͹<C6B5><CDB9><EFBFBD>msg 15
u8 out_verification_msg; //<2F><><EFBFBD>춨msg 16
u8 lcd_display_all_msg; //ȫ<><C8AB> 17
u8 initial_data_msg; //<2F>³<EFBFBD>ֵ<EFBFBD><D6B5>־ 18
u8 model_change_msg;//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> 19
u8 valve_open_msg;//<2F><><EFBFBD><EFBFBD>20
u8 valve_close_msg;//<2F>ط<EFBFBD>21
u8 valve_half_msg;//<2F><EFBFBD><EBBFAA>22
//NB<4E>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ص<EFBFBD>
u8 msg_nb_UploadFreqChange;//<2F>ϱ<EFBFBD>Ƶ<EFBFBD>ʸı<CAB8>
u8 msg_nb_IpPort_change;//IP Port<72>ı<EFBFBD>
u8 msg_nb_StartEnd_change;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼ<EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ı<EFBFBD>
u8 msg_nb_StepLength_change;//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD>ı<EFBFBD>
u8 msg_nb_RetryTimes_change;//<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ı<EFBFBD>
u8 msg_nb_IntensiveTime;//<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD>
u8 msg_nb_FlowAlarm;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
u8 msg_nb_UartSend;//<2F><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ϴ<EFBFBD>
u8 msg_nb_SoftUpdate;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
u8 msg_nb_Apn_change;//APN<50><4E><EFBFBD><EFBFBD>
u8 msg_updatesoft_version_ok;//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD>ȷ
u8 msg_rtcc_adjust_time;//RTCУʱ<D0A3><CAB1>Ϣ
u8 msg_nb_upload_ack_ok;//NB<4E>ϴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ɹ<EFBFBD>
u8 msg_nb_uoload_faild;//NB<4E>ϴ<EFBFBD>ʧ<EFBFBD><CAA7>
u8 msg_caliberate;//<2F><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>־
} STRUCT_MSG; //<2F><><EFBFBD><EFBFBD>msg
typedef enum
{
SetVerificationMsg = 0, //<2F><><EFBFBD>춨0
ClearRealtimeDataMsg = 1, //<2F><>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>1
ClearWorkTimeMsg = 2, //<2F><><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>2
BootloaderMsg = 3, //Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
MeasureHydrostaticJetLagMsg = 4, //<2F>⾻ˮʱ<CBAE><CAB1>4
ClearHistoryDataMsg = 5,//<2F><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>5
ChannelChangeMsg = 6,//<2F>ŵ<EFBFBD><C5B5>л<EFBFBD>6
Start188FmRouteMsg = 7,//188<38><38>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>7
ChangeLinkAddrMsg = 8,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>ַ8
ChangeRouteMettypeMsg = 9,//<2F><><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>9
CalibrateRtcMsg = 12,//RTCУ׼msg 12
ValveCtrlMsg = 13,//<2F><><EFBFBD><EFBFBD>msg 13
StaticMeasureInitMsg = 14,//<2F><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>msg 14
LowPowerMsg = 15,//<2F><><EFBFBD>Ƶ͹<C6B5><CDB9><EFBFBD>msg 15
OutVerificationMsg = 16,//<2F><><EFBFBD>춨msg 16
LcdDisplayAllMsg = 17,//ȫ<><C8AB> 17
InitialDataMsg = 18,//<2F>³<EFBFBD>ֵ<EFBFBD><D6B5>־ 18
ModelChangeMsg = 19,//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> 19
ValveOpenMsg = 20,//<2F><><EFBFBD><EFBFBD>20
ValveCloseMsg= 21,//<2F>ط<EFBFBD>21
ValveHalfMsg = 22,//<2F><EFBFBD><EBBFAA>22
//NB<4E>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ص<EFBFBD>
MsgNbUploadFreqChange=23,//<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
MsgNbIpPortChange=24,//IP Port<72>ı<EFBFBD>
MsgNbStartEndChange=25,//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼ<EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ı<EFBFBD>
MsgNbStepLengthChange=26,//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD>ı<EFBFBD>
MsgNbRetryTimesChange=27,//<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ı<EFBFBD>
MsgNbIntensiveTime=28,//<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD>
MsgNbFlowAlarm=29,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
MsgNbUartSend=30,//<2F><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ϴ<EFBFBD>
MsgNbSoftUpdate=31,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MsgNbApnChange=32,//APN<50><4E><EFBFBD><EFBFBD>
MsgUpdateSoftVersionCheckOk=33,//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD>ȷ
MsgRtccAdjustTime=34,//RTCУʱ<D0A3><CAB1>Ϣ
MsgNbUplaod_AckOk=35,//NB<4E>ϴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ɹ<EFBFBD>
MsgNbUploadFailed=36,//NB<4E>ϴ<EFBFBD>ʧ<EFBFBD><CAA7>
MsgNbUploadRetryMsg=37,//NB<4E>ϴ<EFBFBD><CFB4><EFBFBD>ʼ
MsgSaveHisIndex=38,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дָ<D0B4><D6B8>
MsgSaveBubaoFlag=39,//<2F><><EFBFBD><EFBFBD><E6B2B9><EFBFBD><EFBFBD>־
MsgClearNbDebugFlag=40,//<2F>رպ<D8B1><D5BA><EFBFBD><EFBFBD><EFBFBD>ӡ
MsgOpenIr=41,//<2F>򿪺<EFBFBD><F2BFAABA><EFBFBD>ͨ<EFBFBD><CDA8>
MsgRtccEvenHour=42,//ż<><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>
MsgValve_EmergencyFlowStore=43,//Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MsgTouchKeyReset = 44,
MsgNbUplaod_AckLoginOk=45,//NB<4E>ϴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ɹ<EFBFBD>
MsgCaliberate = 46,//<2F><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1>У׼<D0A3><D7BC>־
///////////////////Ȫ<><C8AA>
MsgQuanzhou_DailySave=47,//<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
MsgQuanzhou_MonthSave=48,//<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
///////////////////<2F><>ɳ
MsgChangcha_ValveUploadCnts=49,//<2F>ط<EFBFBD><D8B7>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MsgTchKey_ClearKeyLimit=50,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//////////////////<2F><><EFBFBD><EFBFBD>״̬<D7B4>л<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
MsgNbUploadByValveStateChange = 51,
MsgNb_SaveHis=52,//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MsgNbUpload_OffLine = 53,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MsgValveCloseSaveFlow = 54,//<2F>ط<EFBFBD><D8B7><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ֵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
MsgValveCloseSuccess = 55,//<2F>ط<EFBFBD><D8B7><EFBFBD>λ
MsgValveOpenSuccess =56,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
//////////////////<2F><><EFBFBD><EFBFBD>
MsgShenYang_DailySave=57,//<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
MsgShenYang_MonthSave=58,//<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
MsgShenYang_YearSave=59,//<2F><EFBFBD><EAB6B3><EFBFBD><EFBFBD><EFBFBD>ݴ洢
MsgShenYang_CircleSave=60,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
MsgShenYang_FrozenClear=61,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MsgShenYang_CircleClear=62,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MsgShenYang_WarningClear=63,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MsgShenYang_FactorySettingAndReset=64,//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
MsgShenYang_SysReset=65,
MsgShenYang_WarningCheck=66,//<2F><><EFBFBD><EFBFBD><E9B1A8>״̬
MsgShenYang_WarningStoreReset=67,
MsgShenYang_NbUploadWarning = 68,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
MsgShenYang_NbUploadWarningWithCircle = 69,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
MsgShenYang_NbUplaod_AckOk=70,//NB<4E>ϴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ɹ<EFBFBD>
MsgShenYang_UdpIpPortChange=71,//UDP IP Port<72>ı<EFBFBD>
/////////////////////////
MsgNb_FlagRcvNbFrame=72,//<2F>յ<EFBFBD>ָ<EFBFBD><D6B8>
MsgSS_JianGeStore=73,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Msg_FrozenStore=74,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Msg_ClearHisOther=75,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>Ϣ
Msg_ValveOpenEmergency=76,//<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Msg_WdtReset=77,//<2F><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ<EFBFBD><CEBB>Ϣ
Msg_Por5VReset=78,//Ƿѹ<C7B7><D1B9>Ӳ<EFBFBD><D3B2>λ
MsgSS_HisIndexStore=79,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
MsgBLE_AdvChange=80,//<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
MsgBLE_ReadData=81,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MsgBLE_RevData=82,//<2F>յ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϣ
MsgAddr_Change=83,//<2F><><EFBFBD><EFBFBD>ַ<EFBFBD>
MsgBLE_ConfigChange=84,//<2F><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC>
MsgBLE_Clktrim=85,//ʱ<><CAB1>У׼
MsgBLE_OtaEnter=86,//<2F><><EFBFBD><EFBFBD>OTA<54><41><EFBFBD><EFBFBD>
MsgBLE_OtaExit=87,//<2F>˳<EFBFBD>OTA<54><41><EFBFBD><EFBFBD>
Msg_PsmPowerCheck=88,//PSM<53><4D>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
Msg_FactoryUpload=89,//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ
Msg_FactoryBleActive=90,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Msg_AllCount=91
} Frame_MsgTypeDef;
#define FRAME_MSG_TYPE_CNT Msg_AllCount
typedef union
{
STRUCT_MSG MsgStruct;
u8 MsgBuf[FRAME_MSG_TYPE_CNT];
} UNION_MSG;
void FrameSetMsgApp(Frame_MsgTypeDef msgType);
u8 FrameCheckMsgApp(Frame_MsgTypeDef msgType);
u8 FrameClearMsgApp(Frame_MsgTypeDef msgType);
/***************************************************************************************************/
/************************************************<2A><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**********************************/
typedef enum
{
FramePara_DNx = 0, //<2F>ܶοھ<CEBF>
FramePara_Tc0 = 1, //<2F><EFBFBD>ϵ<EFBFBD><CFB5>0
FramePara_Tc1 = 2, //<2F><EFBFBD>ϵ<EFBFBD><CFB5>1
FramePara_FcSmall = 3, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>small
FramePara_FcMiddle0 = 4, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Middle0
FramePara_FcMiddle1 = 5, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Middle1
FramePara_FcMiddle2 = 6, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Middle2
FramePara_FcLarge = 7, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Large
FramePara_ReportStartDMY = 8, //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bcd
FramePara_ReportStartSMH = 9, //<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱbcd
FramePara_ProgVersion = 10, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
FramePara_MetAddr0_3 = 11, //ͨ<>ŵ<EFBFBD>ַ<EFBFBD><D6B7>4<EFBFBD>ֽ<EFBFBD>
FramePara_MetAddr4 = 12, //ͨ<>ŵ<EFBFBD>ַ<EFBFBD><D6B7>1<EFBFBD>ֽ<EFBFBD>
FramePara_FuncCfg0_3 = 13,//<2F><><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD>
FramePara_FuncCfg4_7 = 14,//<2F><><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD>
FramePara_FuncCfg8_11 = 15,//<2F><><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD>
FramePara_FuncCfg12_15 = 16,//<2F><><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD>
FramePara_ReportEndSMH = 17,//<2F>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bcd
FramePara_FcMiddle3 = 18, //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Middle3
FramePara_Sta1_2 = 21,//״̬<D7B4><CCAC>
FramePara_CCFlow = 22,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FramePara_StartFlow = 23,//ʼ<><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FramePara_GP30Freq = 24,//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
FramePara_GP30BufLen = 25,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
FramePara_ReportFreq = 30,//<2F>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5>
FramePara_EnableTestFunc = 31,//<2F><EFBFBD><ECB6A8><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>
FramePara_EnableInfrareFunc = 32,//<2F><><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>
FramePara_StartUsingFunc = 33,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FramePara_StoreFrequency = 34,//<2F>ܼ<EFBFBD><DCBC><EFBFBD><E6B4A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
FramePara_SamplingFrequency = 35,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
FramePara_PsmOrPwDown = 36, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼNBģ<42><C4A3>PSM<53><4D><EFBFBD>ϵ<EFBFBD>ģʽѡ<CABD><D1A1>
FramePara_NbParaRetryDelay = 37, //NBģ<42><C4A3><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FramePara_NbParaLoginAckTimes=38,
FramePara_BootVersion = 39,//boot<6F><EFBFBD><E6B1BE>
//
FramePara_End = 40
} Frame_CheckParaTypeDef;
#define FRAME_PARA_BUF_LEN (FramePara_End+1)
u32 FrameCheckParaApp(Frame_CheckParaTypeDef parameter);
void Frame_Para_Init(void);
/***************************************************************************************************/
typedef struct
{
u8 en_code;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ܣ<EFBFBD><31><CEAA><EFBFBD><EFBFBD>
u8 add_num;//<2F><><EFBFBD>ܲ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u16 data_len;//<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
}ENCODE_VERIFY;
typedef struct
{
u8 mcu; //ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
u8 mcu_model; //MCU<43>ͺ<EFBFBD>
u8 product_model; //<2F><>Ʒ<EFBFBD>ͺ<EFBFBD>
u8 hardware_version; //Ӳ<><D3B2><EFBFBD><EFBFBD><E6B1BE>
u8 soft_version[4]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
UNION_4U8TOU32 update_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
UNION_2U8TOU16 update_check; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
UNION_2U8TOU16 bootloader_ver;//<2F><><EFBFBD><EFBFBD><EFBFBD>
u8 bootloader_update_flg;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
u8 bootloader_datas_sourse;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ//0x01--<2D><><EFBFBD><EFBFBD> 0x02--GPRS 0x03--С<><D0A1><EFBFBD><EFBFBD>
UNION_2U8TOU16 bootloader_paknum;//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD>²<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ע<>⣬boot<6F>жϵ<D0B6><CFB5>˿ں<CBBF><DABA><EFBFBD>8081~8090֮<30><EFBFBD><E4A3AC><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ;<3B><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>IP<49><50>ַʱ<D6B7><CAB1><EFBFBD>жϵ<D0B6><CFB5>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>浽UDP IP<49><50>EE<45><45>ַ
u8 bootloader_RSSI; //<2F>ź<EFBFBD>ǿ<EFBFBD><C7BF>
u8 server_ip[4]; //udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ4
UNION_2U8TOU16 server_port; //udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>2
//<2F><><EFBFBD>Ƶ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>EE<45>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
u8 bootloader_addr[7];//<2F><><EFBFBD>Ƶ<EFBFBD>ַ
}U_UPGRADE_INFO; //34<33>ֽ<EFBFBD>
typedef struct
{
u8 FirstPowerOnFlag;
u8 ProductUpoadFailFlag;
u8 ProductUploadFlag;
BLE_FUNC_SW function_switch;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>
u8 NBSleepMode;
u8 LCD_NoTestFlag;
}U_TEMP_INFO;
typedef struct
{
u8 Point_SOE_write; //SOE<4F><45>¼ָ<C2BC><D6B8>
}U_SIGAL_DATA;
typedef union {
struct {
u8 first_flag; //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־λ
u32 work_hour; //<2F>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
DateTime start_time_up; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u16 day_history_addr; //<2F><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD>ݴ洢ָ<E6B4A2><D6B8>
u32 day_data; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
}data;
u8 byte[18];
} RTCC_EE_DATA; //RTCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
FRAME_MET_INFO P1;//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
U_UPGRADE_INFO P2;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<44><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
U_TEMP_INFO P3;//<2F><><EFBFBD><EFBFBD>EE<45><45>ȫ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
U_SIGAL_DATA P4;
RTCC_EE_DATA ee_data;
//GP30_DIFTOF_CAL_DATA P5;
} Data_object;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
//#define FLOW_ 0x2B1A
extern Data_object Sys_data_object;
//20211204
#if PF_TYPE_METER || EN_TYPE_METER || MID_TYPE_METER
extern float default_error_cruve[15][16];
#else
extern float default_error_cruve[12][16];
#endif
extern float default_error_DXS[MULT_COEFFICIENT_BUF_NUM];
void FrameInitApp(void);
void FrameMachineApp(void);
//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>Լʹ<D4BC><CAB9>
void FrameSetSupplementalPack_Flag(u8 tempData);
u16 FrameCheckByte(void);
u8 FrameIfSleepApp(void);
MET_STATE FrameGetByte(void);
u8 Save_histroy_ss_flag(u8 flag);
u8 Clear_histroy_ss_flag(u8 ss_NO);
///////////////////////////////////
u32 HexToBcd32(u32 value);
u32 Gp30DataToBcd(u32 data, u32 times);
/*************NB*************************/
TYP_FLOW_COEFFICIENT* ReadCofficientApp(void);
UNION_4U8TOU32* Read_Flow_CofficientApp(void);//2020-07-08 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
u32 Read_Flow_CofficientApp_For_LCD(u8 index);//2020-08-13 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>A2<41><32>Ļ
void fram_tools_writeU32ByBuf(u8 *pU32Buf, u8 *pSrc, u8 dir);
u8 frame_get_datasource(void);
void frame_set_key(void);
float Get_Temperature_Caliberate(void);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>У׼<D0A3><EFBFBD>
void SetCaliberateTemperature(u16 temp_value);//<2F><><EFBFBD>±<EFBFBD>׼<EFBFBD><EFBFBD>
u8 GetNbiotRevHandleOverFlag(void);
void UWMetPtlPackApp(void);
#define UP_DEAL_S0 0
#define UP_DEAL_S1 1
#define UP_DEAL_S2 2
#define UP_DEAL_S3 3
#define UP_DEAL_S4 4
#define UP_DEAL_S5 5
#define UP_DEAL_S6 6
#define UP_DEAL_S7 7
#define UP_DEAL_S8 8
#define UP_DEAL_S9 9
#define UP_DEAL_S10 10
#define UP_DEAL_S11 11
#define UP_DEAL_S12 12
#define UP_DEAL_S13 13
#define UP_DEAL_S14 14
#define UP_DEAL_S15 15
#define UP_DEAL_S16 16
#define UP_DEAL_S17 17
#define UP_DEAL_S18 18
#define UP_DEAL_S19 19
#define UP_DEAL_S20 20
#define UP_DEAL_S21 21
#define UP_DEAL_S30 30
#define UP_DEAL_S31 31
#define UP_DEAL_S32 32
#define UP_DEAL_S33 33
#define UP_DEAL_S_OVER 99
//<2F><><EFBFBD><EFBFBD>Լ״̬<D7B4><CCAC>
typedef enum{
UW_MET_PTL_IDLE=0, //<2F><><EFBFBD><EFBFBD>
UW_MET_PTL_EXP, //<2F><><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
UW_MET_IES_PTL_PACK_S1, //MBUS<55><53>Լ<EFBFBD><D4BC>Ӧ<EFBFBD><D3A6>֡
UW_MET_MBUS_PTL_PACK_S1, //<2F><><EFBFBD><EFBFBD>NB<4E><42>Լ<EFBFBD><D4BC>Ӧ<EFBFBD><D3A6>֡
UW_MET_SHTCP_PTL_PACK_S1, //<2F>̺<EFBFBD>TCP<43><50>Լ<EFBFBD><D4BC>Ӧ<EFBFBD><D3A6>֡
UW_MET_SYNB_PTL_PACK_S1, //<2F><><EFBFBD><EFBFBD>NB<4E><42>Լ<EFBFBD><D4BC>Ӧ<EFBFBD><D3A6>֡
UW_MET_OTHER_PTL_PACK_S1,
UW_MET_PTL_PACK_S2, //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UW_MET_PTL_PACK_S3, //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}TYP_STATE_MET_PTL_PACK;
/*********************************************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*********************/
#define QUEUE_BUF_SIZE 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
u8 type;
u16 length;
u8 buffer[128];
} ONE_PACK_DATA;
typedef struct
{
u8 handled_count;
u8 total_count;
ONE_PACK_DATA queue[QUEUE_BUF_SIZE];
} NBIOT_REV_QUEUE;
//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define UP_SOURCE_IR 0
#define UP_SOURCE_NB 1
#define UP_SOURCE_MBUS 2
#define UP_SOURCE_BLE 3
//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
#define IES_PTL 1
#define MBUS_PTL 2
//#define SHTCP_PTL 3
//#define SYNB_PTL 4
#define OTHER_PTL 5
//<2F><>Լ<EFBFBD><D4BC>֡״̬
#define PTL_PACK_BUSY 0
#define PTL_PACK_SUCCESS 1
#define PTL_PACK_FAIL 2
#ifdef __cplusplus
}
#endif
#endif /* GP30W_FRAME_APP_NEW_H */