R2UWaterRS485UW500/app/UWater_Frame/UWater_frame_func_ReplyBLE.c

1930 lines
64 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_BLE_SS
#include "UWater_frame_app.h"
#include "UWater_rtcc_app.h"
#include "UWater_lcd_app.h"
#include "UWater_pt_app.h"
#include "UWater_frame_func_ReplyBLE.h"
#include "UWater_encryption_driver.h"
#include "UWater_DataTools_App.h"
#include "UWater_uart_driver.h"
#include "UWater_eeprom_driver.h"
#include "UWater_power_app.h"
#include "sys_processor.h"
#include "UWater_valve_driver.h"
#include "UWater_Valve_app.h"
#include "UWater_power_app.h"
#include "UWater_gp22_app.h"
#include "UWater_QZ_Store_App.h"
#include "UWater_frame_func_ReplyNB.h"
#include "SOE.h"
/**********************************************<2A><>ˮ<EFBFBD><CBAE>Լ******************************************/
static u8 s_eep_complete_BLE=0;
static u8 task_complete_ShenShui = PTL_PACK_BUSY;
static u8 g_frame_temp_buf_ShenShui[UP_BUF_SIZE]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
static u16 g_frame_temp_len_ShenShui=0;
static DateTime shenshui_rtcc_time;
static STRUCT_FRAME_IES frame_struct_ShenShui; //<2F><>Լ<EFBFBD><D4BC>Ϣ
static u8 *new_message_data_rev_ShenShui;
static u8 up_deal_stat_ShenShui = UP_DEAL_S0;//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
/*******<2A><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>*****************************************/
//<2F><><EFBFBD>ɹ<EFBFBD>Լ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static STRU_UPLOAD_FRAME store_frame;//<2F><>֡<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static TYP_STATE_SS step_save_supplt=SS_STATE_S0;
static RTCC_To_Float old_jiange_total_flow;
static RTCC_To_Float new_jiange_total_flow;
static RTCC_UNION_2U8TOU16 jiange_data;
/////////////////////////////////////////////////////////////////////////////////////////////////////
static u8 task_complete_ble = PTL_PACK_BUSY;
//static STRUCT_FRAME_MBUS frame_struct_MBUS; //<2F><>Լ<EFBFBD><D4BC>Ϣ
static u8 *new_message_data_rev_ble;
static u16 g_frame_temp_len_ble;
static u8 g_frame_temp_send_buf_ble[UP_BUF_SIZE]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
//static u8 s_eep_complete_mbus;
static u8 up_deal_stat_ble=UP_DEAL_S0;
//static UNION_QZ_STORE_MONTH mbus_month_data;//<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 frame_flag=0;//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ͱ<EFBFBD>־
//static u8 broad_addr[7] = {0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA};
static u8 ble_read_access_flag=0;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ű<EFBFBD>־
//3.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_ReadData(void)
{
UNION_FLOAT_STORAGE tmp_float_datas1,tmp_float_datas2;
u16 temp_u16data=0;
task_complete_ble = PTL_PACK_FAIL;
g_frame_temp_len_ble =0;
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>F1 <20><>λL
tmp_float_datas1.float_storage_format.datas = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW);
tmp_float_datas2.float_storage_format.datas = tmp_float_datas1.float_datas*10;//ת<><D7AA>L
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[3];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[3];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
tmp_float_datas1.float_storage_format.datas = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW_REVERSE);
tmp_float_datas2.float_storage_format.datas = tmp_float_datas1.float_datas*10;//ת<><D7AA>L
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_float_datas2.float_storage_format.data_buf[3];
//<2F>ź<EFBFBD>ǿ<EFBFBD><C7BF>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޴˽ӿ<CBBD>
//<2F><><EFBFBD>ص<EFBFBD>ѹ
temp_u16data = PowerCheckValueSys();
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (temp_u16data&0xFF);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_u16data>>8;
//<2F><><EFBFBD><EFBFBD>״̬
UNION_4U8TOU32 temp_MetState;
temp_MetState = getBleWetState();
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_MetState.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_MetState.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_MetState.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_MetState.datas_map.data3;
//<2F><><EFBFBD><EFBFBD><EFBFBD>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>24)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>16)&0xFF;
//<2F><><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC>
BleGetFirmVerson(&g_frame_temp_send_buf_ble[g_frame_temp_len_ble]);
g_frame_temp_len_ble++;
g_frame_temp_len_ble++;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0;
//<2F><EFBFBD>
tmp_float_datas1.float_datas = TempCheckValueApp();
if(tmp_float_datas1.float_datas < 0) //CMR<4D><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
{
tmp_float_datas1.float_datas = -tmp_float_datas1.float_datas;
temp_u16data = (u32)(tmp_float_datas1.float_datas*100);//HexToBcd32((u32)(tempTempratureFlag*100));
temp_u16data|= 0x8000;
}
else
{
temp_u16data = (u32)(tmp_float_datas1.float_datas*100);//HexToBcd32((u32)(tempTempratureFlag*100));
temp_u16data &= 0x7FFF;
}
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (temp_u16data&0xFF);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_u16data>>8;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (Sys_data_object.ee_data.data.work_hour/24)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (Sys_data_object.ee_data.data.work_hour/24)>>8;
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (Meter_GetResetCount()>>8)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0;
//Уʱ
DateTime tmp_data_time_buf;
tmp_data_time_buf.s.year = *(new_message_data_rev_ble + 4);
tmp_data_time_buf.s.month = *(new_message_data_rev_ble + 3);
tmp_data_time_buf.s.day = *(new_message_data_rev_ble + 2);
tmp_data_time_buf.s.hour = *(new_message_data_rev_ble + 1);
tmp_data_time_buf.s.minute =*(new_message_data_rev_ble + 0);
tmp_data_time_buf.s.second =0x00;
if(Rtcc_Check_DateTime(&tmp_data_time_buf)==SUCCESS)
{
if(tmp_data_time_buf.s.year>=0x23)
{
RtccSetDateTime(&tmp_data_time_buf);
RtccClearError();
PowerUnSleepClearSumSys(); //<2F><><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BB><EFBFBD>ߵĴ<DFB5><C4B4><EFBFBD>
}
}
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.3 <20>ط<EFBFBD>0x55<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>99Ӧ<39><D3A6><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>AA<41><EFBFBD><EBBFAA>,BB<42><42>ͨ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD>CCȨ<43>޹ط<DEB9><D8B7><EFBFBD>DDӦ<44><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*
01 <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
02 Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
03 <EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
04 Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
05 Ȩ<EFBFBD>޹<EFBFBD>
*/
static void frame_func_reply_BLE_ValveCtrl(void)
{
g_frame_temp_len_ble =0;
#if defined(VALVE)
if(0x55 == *new_message_data_rev_ble)//<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
{
ValveDealAppStart(VALVE_STATE_OPEN);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x01;
}
else if(0xDD == *new_message_data_rev_ble)//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//Ȩ<>޹ط<DEB9><D8B7>ڼ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ(<28>ֻ<EFBFBD><><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//ͨ<><CDA8><EFBFBD><EFBFBD>Ȩ<EFBFBD>޹ط<DEB9>״̬<D7B4><CCAC>ΪӦ<CEAA><D3A6><EFBFBD>ط<EFBFBD>״̬<D7B4><CCAC>ִ<EFBFBD><D6B4>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
if(VALVE_STATE_CLOSE_LOCK == Sys_data_object.P1.ies_valve_paras.valve_state)
{
Sys_data_object.P1.ies_valve_paras.valve_state = VALVE_STATE_CLOSE_EMERGENCY;
}
ValveDealAppStart(VALVE_STATE_OPEN_EMERGENCY);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x02;
}
else if(0xBB == *new_message_data_rev_ble) //<2F><>ͨ<EFBFBD>ط<EFBFBD>
{
ValveDealAppStart(VALVE_STATE_CLOSE);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x03;
}
else if(0x99 == *new_message_data_rev_ble) //Ӧ<><D3A6><EFBFBD>ط<EFBFBD>
{
ValveDealAppStart(VALVE_STATE_CLOSE_EMERGENCY);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x04;
}
else if(0xCC== *new_message_data_rev_ble) //Ȩ<>޹ط<DEB9>
{
ValveDealAppStart(VALVE_STATE_CLOSE_LOCK);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x05;
}
else
{
task_complete_ble = PTL_PACK_FAIL;
}
# else
task_complete_ble = PTL_PACK_FAIL;
#endif
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
static void frame_func_reply_BLE_ReadAddr(void)
{
g_frame_temp_len_ble = 0;
BleGetCurMacAddr(g_frame_temp_send_buf_ble);
g_frame_temp_len_ble+=6;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.5д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ,<2C>޸<EFBFBD>mac<61><63>ַ
static void frame_func_s3_BLE_SetAddr(void)
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_ble = 0;
if(0x01 == Sys_data_object.P1.start_using_flg)
{
task_complete_ble = PTL_PACK_FAIL;
return;
}
for (int tmp_i = 0; tmp_i < 7; tmp_i++)
{
Sys_data_object.P1.met_addr[tmp_i] = *(new_message_data_rev_ble + tmp_i);
}
EepWrite(&Sys_data_object.P1.met_addr[0], EEP_FRAME_MET_ADDR, 7, &s_eep_complete_BLE);
Frame_Para_Init();
FrameSetMsgApp(MsgAddr_Change);//<2F><><EFBFBD><EFBFBD>MAC<41><43>ַ
task_complete_ble = PTL_PACK_SUCCESS;
}
}
//3.6<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_WriteInitValue(void)
{
g_frame_temp_len_ble=0;
if (0x01 == Sys_data_object.P1.start_using_flg) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
task_complete_ble = PTL_PACK_FAIL;
return;
}
FrameSetMsgApp(InitialDataMsg); //<2F>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UNION_4U8TOU32 tmp_datas_buf1,tmp_datas_buf2;
fram_tools_writeU32ByBuf(tmp_datas_buf1.data_buf, new_message_data_rev_ble, 0);
fram_tools_writeU32ByBuf(tmp_datas_buf2.data_buf, (new_message_data_rev_ble + 4), 0);
Gp30InitDataApp(tmp_datas_buf1.datas/10,tmp_datas_buf2.datas/10);
FrameSetMsgApp(MsgBLE_AdvChange);//<2F>³<EFBFBD>ֵ,<2C><><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>
task_complete_ble = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ
static void frame_func_s3_BLE_diff_BootLoad(void)
{
static u8 s_bootloader_version_flg = 0; //Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȽϽ<C8BD><CFBD><EFBFBD>
switch(up_deal_stat_ble)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_ble = 0;
Sys_data_object.P2.mcu = *(new_message_data_rev_ble + 0);//ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
Sys_data_object.P2.mcu_model = *(new_message_data_rev_ble + 1);//MCU<43>ͺ<EFBFBD>
Sys_data_object.P2.product_model = *(new_message_data_rev_ble + 2);//<2F><>Ʒ<EFBFBD>ͺ<EFBFBD>
Sys_data_object.P2.hardware_version = *(new_message_data_rev_ble + 3);//Ӳ<><D3B2><EFBFBD><EFBFBD><E6B1BE>
u16 software_version = (AsciiToHex(*(new_message_data_rev_ble + 10))<<12)+
(AsciiToHex(*(new_message_data_rev_ble + 11))<<8)+
(AsciiToHex(*(new_message_data_rev_ble + 12))<<4)+
(AsciiToHex(*(new_message_data_rev_ble + 13))<<0);
if ((Sys_data_object.P2.hardware_version == HARDWARE_VERSION_USED)&&//Ӳ<><D3B2><EFBFBD>汾2.4
(0x22== Sys_data_object.P2.mcu) && //<2F><>:0-MIC, 1-ST, 2-HC32; <20><>:0-ˮ<><CBAE>,1-<2D><><EFBFBD><EFBFBD>,2-<2D><>ˮ,3-<2D><><EFBFBD><EFBFBD>
(0x00 == Sys_data_object.P2.mcu_model)&&//0x00--HC32L196
(software_version != (PROGRAME_VERSION>>16))&&//ͬ<><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#if defined(VALVE)
((BCD2HEX(GP30_APP_DNX)+1) == Sys_data_object.P2.product_model))//<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>;<3B>з<EFBFBD><D0B7>ھ<EFBFBD>+1
#else
(BCD2HEX(GP30_APP_DNX) == Sys_data_object.P2.product_model))//<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>;<3B><><EFBFBD>ƿھ<C6BF>
#endif
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>
fram_tools_writeU32ByBuf(Sys_data_object.P2.soft_version, (new_message_data_rev_ble + 10), 0);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
fram_tools_writeU32ByBuf(Sys_data_object.P2.update_num.data_buf, (new_message_data_rev_ble + 4), 0);
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
Sys_data_object.P2.update_check.datas_map.data0 = *(new_message_data_rev_ble + 8);
Sys_data_object.P2.update_check.datas_map.data1 = *(new_message_data_rev_ble + 9);
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>:1-<2D><><EFBFBD><EFBFBD>;2-coap;3-udp;4-<2D><><EFBFBD><EFBFBD>
Sys_data_object.P2.bootloader_datas_sourse = *(new_message_data_rev_ble + 14);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־/<2F><>ʽ:1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(*(new_message_data_rev_ble + 15) == 2)
{
Sys_data_object.P2.bootloader_update_flg = 0x77;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else
{
Sys_data_object.P2.bootloader_update_flg = 0x55;//ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
Sys_data_object.P2.bootloader_paknum.datas =0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>־<EFBFBD><D6BE>0
Sys_data_object.P2.bootloader_RSSI = 0;
s_bootloader_version_flg = 0x00;
FrameSetMsgApp(MsgUpdateSoftVersionCheckOk);
EepWrite(&Sys_data_object.P2.soft_version[0], EEP_SOFT_VERSION, 17, &s_eep_complete_BLE);
}
else
{
s_bootloader_version_flg = 0x10;
if(software_version == (PROGRAME_VERSION>>16))//<2F><EFBFBD><E6B1BE>ͬ
{
s_bootloader_version_flg |= 0x20;
}
if (0x22 != Sys_data_object.P2.mcu)
{
s_bootloader_version_flg = s_bootloader_version_flg|0x01;
}
if(0x00 != Sys_data_object.P2.mcu_model)
{
s_bootloader_version_flg = s_bootloader_version_flg|0x02;
}
if(Sys_data_object.P2.hardware_version != HARDWARE_VERSION_USED)
{
s_bootloader_version_flg = s_bootloader_version_flg|0x04;
}
#if defined(VALVE)
if((BCD2HEX(GP30_APP_DNX)+1) != Sys_data_object.P2.product_model)//<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>;<3B>з<EFBFBD><D0B7>ھ<EFBFBD>+1
#else
if(BCD2HEX(GP30_APP_DNX) != Sys_data_object.P2.product_model)//<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>;<3B><><EFBFBD>ƿھ<C6BF>
#endif
{
s_bootloader_version_flg = s_bootloader_version_flg|0x08;
}
}
up_deal_stat_ble = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P2.mcu;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P2.mcu_model;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P2.product_model;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P2.hardware_version;
fram_tools_writeU32ByBuf(&g_frame_temp_send_buf_ble[4], Sys_data_object.P2.soft_version, 0);
g_frame_temp_len_ble +=4;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++]=Sys_data_object.P2.bootloader_datas_sourse;//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = *(new_message_data_rev_ble + 15);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = s_bootloader_version_flg;
task_complete_ble = PTL_PACK_SUCCESS;
FrameSetMsgApp(BootloaderMsg);
if(01 == LcdCheckStateApp()) //<2F>춨״̬
{
FrameSetMsgApp(OutVerificationMsg);//<2F><><EFBFBD>춨msg
}
up_deal_stat_ble = UP_DEAL_S0;
}
}
break;
default:
{
up_deal_stat_ble = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
}
break;
}
}
//3.8 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>,<2C><><EFBFBD><EFBFBD><EFBFBD>汾2<E6B1BE><32>Ӳ<EFBFBD><D3B2><EFBFBD>汾2<E6B1BE><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>3<EFBFBD>ֽ<EFBFBD>
static void frame_func_reply_BLE_ReadSwVersion(void)
{
g_frame_temp_len_ble=0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>24)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>16)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>8)&0xFF;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = (PROGRAME_VERSION>>0)&0xFF;
BleGetFirmVerson(&g_frame_temp_send_buf_ble[g_frame_temp_len_ble]);
g_frame_temp_len_ble+=3;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.9<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
static void frame_func_reply_BLE_TimeFrequency(void)
{
DateTime date_time;
g_frame_temp_len_ble =0;
RtccGetDateTime(&date_time);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.second;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.minute;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.hour;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.day;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.month;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = date_time.s.year;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.10Уʱ
static void frame_func_reply_BLE_CalibrateTime(void)
{
DateTime tmp_data_time_buf;
g_frame_temp_len_ble = 0;
tmp_data_time_buf.s.year = *(new_message_data_rev_ble + 5);
tmp_data_time_buf.s.month = *(new_message_data_rev_ble + 4);
tmp_data_time_buf.s.day = *(new_message_data_rev_ble + 3);
tmp_data_time_buf.s.hour = *(new_message_data_rev_ble + 2);
tmp_data_time_buf.s.minute =*(new_message_data_rev_ble + 1);
tmp_data_time_buf.s.second =*(new_message_data_rev_ble + 0);
RtccSetDateTime(&tmp_data_time_buf);
RtccClearError();
PowerUnSleepClearSumSys(); //<2F><><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BB><EFBFBD>ߵĴ<DFB5><C4B4><EFBFBD> 2015-7-15 <20><><EFBFBD>ӵĽӿڡ<D3BF><DAA1><EFBFBD><EFBFBD><EFBFBD>
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.11<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
static void frame_func_reply_BLE_TestStart(void)
{
//<2F><><EFBFBD><EFBFBD> rtcc <20><><EFBFBD><EFBFBD> EE GP30
g_frame_temp_len_ble = 0;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.12 <20><>ѯ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_TestRead(void)
{
g_frame_temp_len_ble = 0;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.15 <20><>ȡʱ<C8A1><CAB1><EFBFBD><EFBFBD>SOE
static void frame_func_reply_BLE_ReadSoe(void)
{
static u8 num_get,num_to_get,num_to_read,totalnum;
static mtype16_ temp_soe_type;
static ONE_SOE soe_event_read;
static DateTime_noweek start_time;
static DateTime_noweek end_time;
switch(up_deal_stat_ble)
{
case UP_DEAL_S0:
{
totalnum = 0;
num_get = 0;
num_to_read = Sys_data_object.P4.Point_SOE_write;
temp_soe_type.to_uint8[0] = *(new_message_data_rev_ble); //<2F><>ȡ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_soe_type.to_uint8[1] = *(new_message_data_rev_ble+1);
start_time.s.year = *(new_message_data_rev_ble + 2); //<2F><>ʼʱ<CABC><CAB1>
start_time.s.month = *(new_message_data_rev_ble + 3);
start_time.s.day = *(new_message_data_rev_ble + 4);
start_time.s.hour = *(new_message_data_rev_ble + 5);
start_time.s.minute = *(new_message_data_rev_ble + 6);
start_time.s.second = *(new_message_data_rev_ble + 7);
end_time.s.year = *(new_message_data_rev_ble + 8); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
end_time.s.month = *(new_message_data_rev_ble + 9);
end_time.s.day = *(new_message_data_rev_ble + 10);
end_time.s.hour = *(new_message_data_rev_ble + 11);
end_time.s.minute = *(new_message_data_rev_ble + 12);
end_time.s.second = *(new_message_data_rev_ble + 13);
num_to_get = *(new_message_data_rev_ble + 14); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if((0 == num_to_get) || (MAX_NUM_READ_SOE <= num_to_get))
{
up_deal_stat_ble = UP_DEAL_S3;
}
else
{
up_deal_stat_ble = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1://<2F><>ȡһ<C8A1><D2BB>SOE
{
if(totalnum >= TOTAL_NUM_SOE)//<2F>ܹ<EFBFBD><DCB9><EFBFBD>TOTAL_NUM_SOE<4F><45> ǿ<><C7BF><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
{
up_deal_stat_ble = UP_DEAL_S3;
break;
}
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
totalnum++;
if(num_to_read > TOTAL_NUM_SOE) //<2F><>ָֹ<D6B9><D6B8><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
{
num_to_read = TOTAL_NUM_SOE;
}
if(num_to_read == 0)
{
num_to_read = TOTAL_NUM_SOE;
}
num_to_read--;
EepRead(EEP_ADDR_SOE_BASE + (u16)num_to_read*LENGTH_ONE_SOE,(u8*)&soe_event_read,LENGTH_ONE_SOE, &s_eep_complete_BLE);
up_deal_stat_ble = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(TRUE == Check_One_Soe(temp_soe_type.to_uint16,&start_time,&end_time,&soe_event_read))//<2F><><EFBFBD>һ<E2B5BD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>SOE
{
memcpy(g_frame_temp_send_buf_ble + 1 + (u16)num_get * LENGTH_ONE_SOE,&soe_event_read,LENGTH_ONE_SOE);
num_get++;
if(num_get >= num_to_get)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
up_deal_stat_ble = UP_DEAL_S3;
break;
}
}
up_deal_stat_ble = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S3:
{
up_deal_stat_ble = UP_DEAL_S0;
g_frame_temp_send_buf_ble[0] = num_get;
g_frame_temp_len_ble = (1 + (u16) num_get * LENGTH_ONE_SOE);
task_complete_ble = PTL_PACK_SUCCESS;
}
break;
default:
{
up_deal_stat_ble = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
}
break;
}
}
//3.16 <20><>ȡǷѹ<C7B7><D1B9>ֵ
static void frame_func_reply_BLE_ReadVoltageLow(void)
{
g_frame_temp_len_ble =0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P1.voltage_low[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P1.voltage_low[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P1.voltage_low[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P1.voltage_low[3];
up_deal_stat_ble = UP_DEAL_S0;
task_complete_ble = PTL_PACK_SUCCESS;
}
//3.17 <20><><EFBFBD><EFBFBD>Ƿѹ<C7B7><D1B9>ֵ
static void frame_func_reply_BLE_SetVoltageLow(void)
{
if(TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_ble = 0;
Sys_data_object.P1.voltage_low[0] = *(new_message_data_rev_ble + 0);
Sys_data_object.P1.voltage_low[1] = *(new_message_data_rev_ble + 1);
Sys_data_object.P1.voltage_low[2] = *(new_message_data_rev_ble + 2);
Sys_data_object.P1.voltage_low[3] = *(new_message_data_rev_ble + 3);
EepWrite(Sys_data_object.P1.voltage_low, EEP_BLE_PARA_VOLTAGE, 4, &s_eep_complete_BLE);
up_deal_stat_ble = UP_DEAL_S0;
task_complete_ble = PTL_PACK_SUCCESS;
}
}
//3.25 <20><>ȡ<EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD>
static UNION_QZ_STORE_DAY temp_daily_data;
static void frame_func_reply_BLE_ReadDaily(void)
{
static u8 temp_read_index = 0;
static u8 temp_read_code = 0;
static u8 temp=0;
switch(up_deal_stat_ble)
{
case UP_DEAL_S0:
{
temp_read_code = 1;
g_frame_temp_len_ble =0;
temp_read_index = get_QZ_StorePara(QZ_StoreCurIndex_Daily);
up_deal_stat_ble = UP_DEAL_S1;
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
if (temp_read_index >= temp_read_code)
{
temp = temp_read_index - temp_read_code;
}
else
{
temp = 100 - (temp_read_code - temp_read_index);
}
EepRead((EEP_ADDR_QZ_STORE_DAY +(temp*128)), temp_daily_data.data_buf, 128, &s_eep_complete_BLE);
up_deal_stat_ble = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(temp_read_code<32)
{
if((temp_daily_data.Data.Head==0x5A)&&(temp_daily_data.Data.End==0xA5))
{
temp_daily_data.Data.DailyFlowData.gp22_u32 = temp_daily_data.Data.DailyFlowData.gp22_u32*10;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.DailyFlowData.buf[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.DailyFlowData.buf[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.DailyFlowData.buf[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.DailyFlowData.buf[3];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.MetState[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.MetState[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.MetState[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.MetState[3];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.Year;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.Month;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_daily_data.Data.Day;
}
temp_read_code++;
up_deal_stat_ble = UP_DEAL_S1;
}
else
{
task_complete_ble = PTL_PACK_SUCCESS;
up_deal_stat_ble = UP_DEAL_S0;
}
}
}
break;
default:
{
task_complete_ble = PTL_PACK_FAIL;
up_deal_stat_ble = UP_DEAL_S0;
}
break;
}
}
//3.26 <20><>ȡ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>
static UNION_QZ_STORE_MONTH temp_month_data;
static void frame_func_reply_BLE_ReadMonth(void)
{
static u8 temp_read_index = 0;
static u8 temp_read_code = 0;
static u8 temp=0;
switch(up_deal_stat_ble)
{
case UP_DEAL_S0:
{
temp_read_code = 0;
g_frame_temp_len_ble =0;
temp_read_index = get_QZ_StorePara(QZ_StoreCurIndex_Month);
up_deal_stat_ble = UP_DEAL_S1;
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
if (temp_read_index >= temp_read_code)
{
temp = temp_read_index - temp_read_code;
}
else
{
temp = 24 - (temp_read_code - temp_read_index);
}
EepRead((EEP_ADDR_QZ_STORE_MONTH +(temp*6)), temp_month_data.data_buf, 6, &s_eep_complete_BLE);
up_deal_stat_ble = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(temp_read_code<24)
{
temp_month_data.Data.FlowData.gp22_u32 = temp_month_data.Data.FlowData.gp22_u32*10;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.FlowData.buf[0];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.FlowData.buf[1];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.FlowData.buf[2];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.FlowData.buf[3];
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.Year;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_month_data.Data.Month;
temp_read_code++;
up_deal_stat_ble = UP_DEAL_S1;
}
else
{
task_complete_ble = PTL_PACK_SUCCESS;
up_deal_stat_ble = UP_DEAL_S0;
}
}
}
break;
default:
{
task_complete_ble = PTL_PACK_FAIL;
up_deal_stat_ble = UP_DEAL_S0;
}
break;
}
}
//<2F>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_TernalRestart(void)
{
g_frame_temp_len_ble = 0;
FrameSetMsgApp(BootloaderMsg);
if(01 == LcdCheckStateApp()) //<2F>춨״̬
{
FrameSetMsgApp(OutVerificationMsg); //<2F><><EFBFBD>춨msg
}
task_complete_ble = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
static void frame_func_s3_BLE_CfgFunctioncfg(void)
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_ble = 0;
UNION_4U8TOU32 temp_flag_bytes;
fram_tools_writeU32ByBuf(temp_flag_bytes.data_buf, (new_message_data_rev_ble + 0), 0);
if (temp_flag_bytes.datas > 0)
{
for(int temp_i = 0; temp_i < 32; temp_i++)
{
if (0x00000001 == ((temp_flag_bytes.datas >> temp_i) & 0x00000001))
{
Sys_data_object.P1.func_cfg_bytes[temp_i] = *(new_message_data_rev_ble + 4 + temp_i);
}
}
EepWrite(&Sys_data_object.P1.func_cfg_bytes[0], EEP_FRAME_FUNCCFGBYTES_ADDR, 32, &s_eep_complete_BLE);
Frame_Para_Init();
FrameSetMsgApp(MsgBLE_ConfigChange);
}
for(int i = 0; i<32 ;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = Sys_data_object.P1.func_cfg_bytes[i];
}
task_complete_ble = PTL_PACK_SUCCESS;
}
}
//<2F><>˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_ReadInstantFlowAndTemperature(void)
{
MET_STATE temp_state; //״̬<D7B4><CCAC>
static DateTime tmp_time_buf;
UNION_4U8TOU32 tmp_datas_buf;
UNION_FLOAT_STORAGE tmp_float_datas_buf;
g_frame_temp_len_ble=0;
tmp_float_datas_buf.float_storage_format.datas = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW); //<2F><>ǰ<EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>
tmp_datas_buf.datas = (u32) tmp_float_datas_buf.float_datas;
tmp_datas_buf.datas = HexToBcd32(tmp_datas_buf.datas);
fram_tools_writeU32ByBuf(&g_frame_temp_send_buf_ble[g_frame_temp_len_ble], tmp_datas_buf.data_buf, 0);
g_frame_temp_len_ble+=4;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x2C;//m3
tmp_datas_buf.datas = Gp30CheckDataApp(GP30_APP_INS_FLOW); //˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD>(<28><>λС<CEBB><D0A1><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>100000<30><30>)//BCD
tmp_datas_buf.datas = Gp30DataToBcd(tmp_datas_buf.datas, 100);
fram_tools_writeU32ByBuf(&g_frame_temp_send_buf_ble[5], tmp_datas_buf.data_buf, 0);
g_frame_temp_len_ble+=4;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x35;//m3/h
float tmep = TempCheckValueApp(); //
if(tmep <0)
{
tmp_datas_buf.datas = (u32)(tmep*(-100));
tmp_datas_buf.datas &= 0x0FFFF;
tmp_datas_buf.datas |= 0x80000;
}
else
{
tmp_datas_buf.datas = (u32)(tmep*(100));
tmp_datas_buf.datas &= 0x7FFFF;
}
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
RtccGetDateTime(&tmp_time_buf);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.day; //<2F><>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.hour; //ʱ
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.minute; //<2F><>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.second; //<2F><>
temp_state = FrameGetByte();
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat3;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat4;
task_complete_ble = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD>춨״̬
static void frame_func_reply_BLE_SetVerification(void)
{
g_frame_temp_len_ble=0;
if(*new_message_data_rev_ble == 1)//<2F><><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == Sys_data_object.P1.enable_verification_function)
{
task_complete_ble = PTL_PACK_FAIL;
return;
}
FrameSetMsgApp(SetVerificationMsg);
FrameClearMsgApp(MsgCaliberate);//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>У׼У׼<D0A3><D7BC>־
}
else if(*new_message_data_rev_ble == 10)//<2F>˳<EFBFBD><CBB3>
{
if(01 == LcdCheckStateApp()) //<2F>춨״̬
{
FrameSetMsgApp(OutVerificationMsg); //<2F><><EFBFBD>춨msg
}
}
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = *new_message_data_rev_ble;
task_complete_ble = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD><ECB6A8><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_ReadVerificationData(void)
{
int i;
static MET_STATE temp_state; //״̬<D7B4><CCAC>
static DateTime tmp_time_buf;
UNION_4U8TOU32 tmp_datas_buf;
UNION_FLOAT_STORAGE tmp_float_datas_buf;
float tempTempratureFlag;
g_frame_temp_len_ble=0;
if(01 != LcdCheckStateApp()) //<2F>Ǽ춨״̬
{
task_complete_ble = PTL_PACK_FAIL;
return;
}
//<2F><EFBFBD>
if(TRUE==Check_Start_STOP_Filter_Flag())//<2F><>ȡstart-stop<6F><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>˲<EFBFBD><CBB2><EFBFBD>־
{
Clear_Start_STOP_Filter_Flag();//<2F><><EFBFBD><EFBFBD>start-stop<6F><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>˲<EFBFBD><CBB2><EFBFBD>־
tempTempratureFlag = Check_Temperature_Parameter();//<2F><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>
}
else
{
tempTempratureFlag = TempCheckValueApp();//<2F><>ȡʵʱ<CAB5><EFBFBD>
}
if(tempTempratureFlag < 0)
{
tempTempratureFlag = -tempTempratureFlag;
tmp_datas_buf.datas = HexToBcd32((u32)(tempTempratureFlag*100));
tmp_datas_buf.datas|= 0x800000;
}
else
{
tmp_datas_buf.datas = HexToBcd32((u32)(tempTempratureFlag*100));
tmp_datas_buf.datas &= 0x7FFFFF;
}
for(i=0;i<3;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
//<2F>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>
tmp_float_datas_buf.float_storage_format.datas = Gp30CheckTestDataApp(GP30_APP_TOTAL_FLOW); //<2F>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>//BCD
tmp_datas_buf.datas = (u32) (tmp_float_datas_buf.float_datas);
tmp_datas_buf.datas = HexToBcd32(tmp_datas_buf.datas);
for(i=0;i<4;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x2C; //m?
//˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD>
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_INS_FLOW); //˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD>(<28><>λС<CEBB><D0A1><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>100000<30><30>)//BCD
tmp_datas_buf.datas = Gp30DataToBcd(tmp_datas_buf.datas, 100);
for(i=0;i<4;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x35; //m?/h
//up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_TOF);//up<75><70><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȡ
for(i=0;i<4;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
//Magnify 100000 times<65><73>m3/h<><68><EFBFBD><EFBFBD>Real-time instantaneous flow
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_INS_FLOW_LCD);
tmp_datas_buf.datas = Gp30DataToBcd(tmp_datas_buf.datas, 100);
for(i=0;i<4;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
//tof
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_DIFF); //ʱ<><CAB1><EFBFBD><EFBFBD>
for(i=0;i<4;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
////<2F>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>//BCD
tmp_datas_buf.datas = RtccGetWorkHourApp();
tmp_datas_buf.datas = HexToBcd32(tmp_datas_buf.datas);
for(i=0;i<3;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
//ʵʱʱ<CAB1><CAB1>
RtccGetDateTime(&tmp_time_buf);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0x20;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.year;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.month;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.day;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.hour;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.minute;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_time_buf.s.second;
//״̬<D7B4><CCAC>
temp_state = FrameGetByte();
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat3;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = temp_state.stat4;
//************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:15<31>ֽ<EFBFBD>***********************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T0-T2<54><32>T2<54><32>:3<>ֽ<EFBFBD>
//<2F><EFBFBD>T0-T2<54><32>T2<54><32>:3<>ֽ<EFBFBD>
#if WENDU_FANSUAN_OPEN
tempTempratureFlag = TempCheckValueApp();//<2F><><EFBFBD><EFBFBD>ʵʱ<CAB5>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(tempTempratureFlag < 0)
{
tempTempratureFlag = -tempTempratureFlag;
tmp_datas_buf.datas = HexToBcd32((u32)(tempTempratureFlag*100));
tmp_datas_buf.datas|= 0x800000;
}
else
{
tmp_datas_buf.datas = HexToBcd32((u32)(tempTempratureFlag*100));
tmp_datas_buf.datas &= 0x7FFFFF;
}
for(i=0;i<3;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.data_buf[i];
}
tmp_datas_buf.datas = Gp30CheckDataApp(11); //TOF_UP<55><50><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data3;
tmp_datas_buf.datas = Gp30CheckDataApp(12);//TOF_DOWN<57><4E><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data3;
#else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>д0
for(i=0;i<3;i++)
{
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = 0;
}
//up amplitude(V1):4<>ֽ<EFBFBD>
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_PEAK_UP);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data3;
//down amplitude(V2):4<>ֽ<EFBFBD>
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_PEAK_DOWN);
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data3;
#endif
//Ԥ<><D4A4>:4<>ֽ<EFBFBD>
tmp_datas_buf.datas = Gp30CheckTestDataApp(GP30_APP_DOWN);//down <20>ĵ<EFBFBD><C4B5><EFBFBD>ʱ<EFBFBD><CAB1>
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data0;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data1;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data2;
g_frame_temp_send_buf_ble[g_frame_temp_len_ble++] = tmp_datas_buf.datas_map.data3;
task_complete_ble = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ:<3A><>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
static void frame_func_reply_BLE_ReadHistoryData(void)
{
u8 temp = 0;
u8 temp_read_index = 0;
u8 temp_read_code = *new_message_data_rev_ble;
switch(up_deal_stat_ble)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
g_frame_temp_len_ble =0;
temp_read_index = NB_SS_Control_GetPara(NB_HistroyReadIndex);
if (temp_read_index >= temp_read_code)
{
temp = temp_read_index - temp_read_code;
}
else
{
temp = 32 - (temp_read_code - temp_read_index);
}
EepRead((FRAME_NBIot_HISTORY_READ_ADD +(temp*PACK_NUM_GPRS)), g_frame_temp_send_buf_ble, PACK_NUM_GPRS, &s_eep_complete_BLE);
up_deal_stat_ble = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_frame_temp_len_ble = PACK_NUM_GPRS;
task_complete_ble = PTL_PACK_SUCCESS;
up_deal_stat_ble = UP_DEAL_S0;
}
}
break;
default:
{
up_deal_stat_ble = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
}
break;
}
}
//<2F><>ˮ<EFBFBD><CBAE>Լ:<3A><>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
static void frame_func_reply_NB_ReadHistoryData(void)
{
u8 temp = 0;
u8 temp_read_index = 0;
u8 temp_read_code = *new_message_data_rev_ShenShui;
switch(up_deal_stat_ShenShui)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
g_frame_temp_len_ShenShui =0;
temp_read_index = NB_SS_Control_GetPara(NB_HistroyReadIndex);
if (temp_read_index >= temp_read_code)
{
temp = temp_read_index - temp_read_code;
}
else
{
temp = 32 - (temp_read_code - temp_read_index);
}
EepRead((FRAME_NBIot_HISTORY_READ_ADD +(temp*PACK_NUM_GPRS)), g_frame_temp_buf_ShenShui, PACK_NUM_GPRS, &s_eep_complete_BLE);
up_deal_stat_ShenShui = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_frame_temp_len_ShenShui = PACK_NUM_GPRS;
task_complete_ShenShui = PTL_PACK_SUCCESS;
up_deal_stat_ShenShui = UP_DEAL_S0;
}
}
break;
default:
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ShenShui = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD>OTA
static void frame_func_reply_BLE_SetOta(void)
{
g_frame_temp_len_ble=0;
if(*new_message_data_rev_ble == 0xAA)//<2F><><EFBFBD><EFBFBD>OTA<54><41><EFBFBD><EFBFBD>״̬
{
FrameSetMsgApp(MsgBLE_OtaEnter);
}
else
{
FrameSetMsgApp(MsgBLE_OtaExit);
}
task_complete_ble = PTL_PACK_SUCCESS;
}
void setBleReadAccessFlag(u8 data)
{
ble_read_access_flag = data;
}
static u8 getBleReadAccessFlag(void)
{
return ble_read_access_flag;
}
//<2F><><EFBFBD>ɹ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ַ<EFBFBD>ж<EFBFBD>
u8 check_met_addr_BLE(u8 *p_buf,u8 *des_buf)
{
u8 tmp_i;
for (tmp_i = 0; tmp_i < 7; tmp_i++)
{
if (*(p_buf + 2 +tmp_i) != *(des_buf + tmp_i))
{
break;
}
}
if( (BLE_READ_MET_DI0 == *(p_buf+13))
||(BLE_SET_MET_DI0 == *(p_buf+13)))//<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ
{
for(tmp_i=0;tmp_i < 7;tmp_i++)
{
if(0xAA != *(p_buf + 2 + tmp_i))//<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD>ַ
break;
}
}
if(tmp_i >= 7)
{
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
static u8 crack_frame_BLE_Static(u16 frame_lenth,u8 *frame_buffer)
{
u16 tmp_i = 0;
u16 tmp_j = 0;
u8 tmp_check = 0;
for (tmp_i = 0; tmp_i < frame_lenth; tmp_i++)
{
if (FM_HEAD_MARK == *(frame_buffer + tmp_i))
{
if (MET_TYPE == *(frame_buffer + tmp_i + 1))
{
frame_struct_ShenShui.head_site = tmp_i; //<2F><>¼֡ͷ
frame_struct_ShenShui.sta = *(frame_buffer + tmp_i + 10);//״̬<D7B4><CCAC>
frame_struct_ShenShui.len = *(frame_buffer + tmp_i + 11)+ *(frame_buffer + tmp_i + 12)*256;//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
frame_struct_ShenShui.end_site = frame_struct_ShenShui.head_site + frame_struct_ShenShui.len + 14; //<2F><><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ֽ<EFBFBD> <20>ٸ<EFBFBD>14
frame_struct_ShenShui.check_len = frame_struct_ShenShui.end_site - frame_struct_ShenShui.head_site - 1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if ((frame_struct_ShenShui.end_site < frame_lenth) && (FM_END_MARK == *(frame_buffer + frame_struct_ShenShui.end_site)))
{
frame_struct_ShenShui.ctrl = *(frame_buffer + frame_struct_ShenShui.head_site + 9);
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
for (tmp_j = frame_struct_ShenShui.head_site; tmp_j < (frame_struct_ShenShui.end_site - 1); tmp_j++)
{
tmp_check += *(frame_buffer + tmp_j);
}
if (tmp_check == *(frame_buffer + frame_struct_ShenShui.end_site - 1))
{
if((frame_struct_ShenShui.sta & 0x01) == 0x01)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ܹ<EFBFBD>Լ
{
//<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>Լ:<3A><><EFBFBD><EFBFBD>,<2C>޸ļ<DEB8><C4BC>ܱ<EFBFBD>־
//AES_decrypt(frame_buffer+frame_struct_ShenShui.head_site +12, frame_struct_ShenShui.len,Sys_data_object.P1.key);
AES_decrypt(frame_buffer+frame_struct_ShenShui.head_site +13, frame_struct_ShenShui.len,Sys_data_object.P1.key);
//<2F>Ǽ<EFBFBD><C7BC><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
tmp_check = 0;
for (tmp_j = frame_struct_ShenShui.head_site; tmp_j < (frame_struct_ShenShui.end_site - 1); tmp_j++)
{
tmp_check += *(frame_buffer + tmp_j);
}
*(frame_buffer + frame_struct_ShenShui.end_site - 1) = tmp_check;
}
if (SUCCESS_IES == check_met_addr_BLE(frame_buffer + frame_struct_ShenShui.head_site, Sys_data_object.P1.met_addr))
{
frame_struct_ShenShui.sta &= 0xFD; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>bit1Ϊ1ʱ<31><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>0<EFBFBD><30>ʾӦ<CABE><D3A6><EFBFBD><EFBFBD>
frame_struct_ShenShui.DI0 = *(frame_buffer + frame_struct_ShenShui.head_site + 13);
frame_struct_ShenShui.DI1 = *(frame_buffer + frame_struct_ShenShui.head_site + 14);
frame_struct_ShenShui.serial_num0 = *(frame_buffer + frame_struct_ShenShui.head_site + 15);
frame_struct_ShenShui.serial_num1 = *(frame_buffer + frame_struct_ShenShui.head_site + 16);
new_message_data_rev_ble = frame_buffer + frame_struct_ShenShui.head_site + 17;
return SUCCESS_IES;
}
}
}
}
}
}
return ERROR_IES;
}
static u8 up_deal_code_ble_static(void)
{
task_complete_ble = PTL_PACK_BUSY;
switch(frame_struct_ShenShui.ctrl)
{
case 0xb0:
{
FrameSetMsgApp(MsgBLE_RevData);//<2F>յ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϣ
if(frame_struct_ShenShui.DI0 != BLE_READ_DATA_DI0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>Ȩ<EFBFBD>ɹ<EFBFBD>
{
if(getBleReadAccessFlag()==0)
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
return task_complete_ble;
}
}
switch(frame_struct_ShenShui.DI0)
{
case BLE_READ_DATA_DI0://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadData();
FrameSetMsgApp(MsgBLE_ReadData);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
setBleReadAccessFlag(1);//<2F><>Ȩ<EFBFBD>ɹ<EFBFBD>
}
break;
case BLE_VALVE_CTRL_DI0://<2F><><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ValveCtrl();
}
break;
case BLE_READ_MET_DI0://<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ַ
{
frame_func_reply_BLE_ReadAddr();
}
break;
case BLE_SET_MET_DI0://<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ַ
{
frame_func_s3_BLE_SetAddr();
}
break;
case BLE_SET_DATA_DI0://<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_WriteInitValue();
}
break;
case BLE_SET_BOOT_DI0://<2F><><EFBFBD><EFBFBD>
{
frame_func_s3_BLE_diff_BootLoad();
}
break;
case BLE_READ_VERSION_DI0://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadSwVersion();
}
break;
case BLE_READ_TIME_DI0://<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
frame_func_reply_BLE_TimeFrequency();
}
break;
case BLE_SET_TIME_DI0://<2F><><EFBFBD>ñ<EFBFBD>ʱ<EFBFBD><CAB1>
{
frame_func_reply_BLE_CalibrateTime();
}
break;
case BLE_TEST_START_DI0://<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
{
frame_func_reply_BLE_TestStart();
}
break;
case BLE_TEST_READ_DI0://<2F><>ѯ<EFBFBD>Լ<EFBFBD>
{
frame_func_reply_BLE_TestRead();
}
break;
case BLE_READ_SOE_DI0://<2F><>SOE
{
frame_func_reply_BLE_ReadSoe();
}
break;
case BLE_READ_PWLOW_DI0://<2F><>Ƿѹ<C7B7><D1B9>ֵ
{
frame_func_reply_BLE_ReadVoltageLow();
}
break;
case BLE_SET_PWLOW_DI0://<2F><><EFBFBD><EFBFBD>Ƿѹ<C7B7><D1B9>ֵ
{
frame_func_reply_BLE_SetVoltageLow();
}
break;
case BLE_READ_DAILY_DI0://<2F><><EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadDaily();
}
break;
case BLE_READ_MONTH_DI0://<2F><><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadMonth();
}
break;
case BLE_RESET_MCU_DI0://MCU<43><55><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_TernalRestart();
}
break;
case BLE_SET_CONFIG_DI0://<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_s3_BLE_CfgFunctioncfg();
}
break;
case BLE_READ_FLOWTEMP_DI0://<2F><>˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadInstantFlowAndTemperature();
}
break;
case BLE_ENTER_TEST_DI0://<2F>춨״̬
{
frame_func_reply_BLE_SetVerification();
}
break;
case BLE_READ_TEST_DI0://<2F><><EFBFBD><EFBFBD><ECB6A8><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadVerificationData();
}
break;
case BLE_READ_HIS_DI0://<2F><>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
frame_func_reply_BLE_ReadHistoryData();
}
break;
case BLE_OTA_NOTIC_DI0://OTA
{
frame_func_reply_BLE_SetOta();
}
break;
default:
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
}
}
frame_struct_ShenShui.ack_ctrl = 0xA0;
}
break;
default:
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ble = PTL_PACK_FAIL;
}
break;
}
return task_complete_ble;
}
static void Frame_ResetDealState_BLE_Static(void)
{
up_deal_stat_ble = UP_DEAL_S0;
}
/*******************************************************************************
* @fun_name: Frame_CreatCrcCs_Ack
* @brief : <EFBFBD><EFBFBD>cs<EFBFBD><EFBFBD>CRCУ<EFBFBD><EFBFBD>֡
* @param[in] : *p;len
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
void Frame_ack_BleBase(STRUCT_FRAME_IES temp_struct, u8* p_temp_buf, u16 p_temp_len, u8* p_send_buf, u16* p_send_len)
{
int i = 0;
UNION_2U8TOU16 temp_pack_len;
p_send_buf[0] = 0xFE;
p_send_buf[1] = 0xFE;
p_send_buf[2] = FM_HEAD_MARK;
p_send_buf[3] = MET_TYPE;
for (i = 0; i < 7; i++)
{
p_send_buf[4 + i] = Sys_data_object.P1.met_addr[i];
}
p_send_buf[11] = temp_struct.ack_ctrl;
p_send_buf[12] = temp_struct.sta;//sta 0x40<34><30>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>֡ 0x80 λ<><CEBB><EFBFBD><EFBFBD>֡ 0xc0Ϊ<30><CEAA><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>֡
{
temp_pack_len.datas = p_temp_len+4;
p_send_buf[13] = temp_pack_len.datas_map.data0;
p_send_buf[14] = temp_pack_len.datas_map.data1;
p_send_buf[15] = temp_struct.DI0; //DI0
p_send_buf[16] = temp_struct.DI1; //DI1
p_send_buf[17] = temp_struct.serial_num0; //SER
p_send_buf[18] = temp_struct.serial_num1; //SER
memcpy(&p_send_buf[19], p_temp_buf, p_temp_len);
if((temp_struct.sta & 0x01) == 0x01)
{
AES_encrypt(1,&p_send_buf[15], temp_pack_len.datas, Sys_data_object.P1.key);//<2F><><EFBFBD><EFBFBD>
temp_pack_len.datas = (temp_pack_len.datas/16+1)*16;
p_send_buf[13]=temp_pack_len.datas_map.data0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ǰ
p_send_buf[14]=temp_pack_len.datas_map.data1;
}
p_send_buf[15+temp_pack_len.datas]=0;
for (i = 2; i < 15+temp_pack_len.datas; i++)
{
p_send_buf[15+temp_pack_len.datas] += p_send_buf[i];//У<><D0A3><EFBFBD><EFBFBD>
}
p_send_buf[16+temp_pack_len.datas] = FM_END_MARK; //֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*p_send_len = 17+temp_pack_len.datas;
}
}
static void Frame_CreatAck_BLE(u8* p_send_buf, u16* p_send_len)
{
STRUCT_FRAME_IES temp_struct;
temp_struct.ack_ctrl = frame_struct_ShenShui.ack_ctrl;
temp_struct.DI0 = frame_struct_ShenShui.DI0;
temp_struct.DI1 = frame_struct_ShenShui.DI1;
temp_struct.sta = frame_struct_ShenShui.sta;
temp_struct.serial_num0 = frame_struct_ShenShui.serial_num0;
temp_struct.serial_num1 = frame_struct_ShenShui.serial_num1;
Frame_ack_BleBase(temp_struct,g_frame_temp_send_buf_ble, g_frame_temp_len_ble, p_send_buf, p_send_len);
}
//------------------------------------------------------<2D><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>--------------------------------------------------/
/******************************************<2A><>ˮ<EFBFBD><CBAE>Լ*************************************************************/
//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Լ
static u8 crack_frame_ShenShui(u16 frame_lenth,u8 *frame_buffer)
{
u8 temp_res = crack_frame_IES_Base(frame_lenth, frame_buffer, &frame_struct_ShenShui);
if(temp_res == SUCCESS_IES)
{
frame_struct_ShenShui.sta &= 0xFD; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>bit1Ϊ1ʱ<31><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>0<EFBFBD><30>ʾӦ<CABE><D3A6><EFBFBD><EFBFBD>
frame_struct_ShenShui.DI0 = *(frame_buffer + frame_struct_ShenShui.head_site + 12);
frame_struct_ShenShui.DI1 = *(frame_buffer + frame_struct_ShenShui.head_site + 13);
frame_struct_ShenShui.serial_num0 = *(frame_buffer + frame_struct_ShenShui.head_site + 14);
frame_struct_ShenShui.serial_num1 = *(frame_buffer + frame_struct_ShenShui.head_site + 15);
new_message_data_rev_ShenShui = frame_buffer + frame_struct_ShenShui.head_site + 16;
frame_lenth = 0;
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
static u8 up_deal_code_ShenShui(void)
{
task_complete_ShenShui = PTL_PACK_BUSY;
switch(frame_struct_ShenShui.ctrl)
{
case SS_READ_HIS_CTRL:
{
switch(frame_struct_ShenShui.DI1)
{
case SS_READ_HIS_CTRL_ID1://<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
frame_func_reply_NB_ReadHistoryData();
}
break;
default:
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ShenShui = PTL_PACK_FAIL;
}
}
frame_struct_ShenShui.ack_ctrl = SS_ACK_READ_HIS_CTRL;
}
break;
default:
{
up_deal_stat_ShenShui = UP_DEAL_S0;
task_complete_ShenShui = PTL_PACK_FAIL;
}
break;
}
return task_complete_ShenShui;
}
static void Frame_ResetDealState_ShenShui(void)
{
up_deal_stat_ShenShui = UP_DEAL_S0;
}
//<2F><>ˮӦ<CBAE><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
static void Frame_ack_ShenShui(u8* p_send_buf, u16* p_send_len)
{
STRUCT_FRAME_IES temp_struct;
temp_struct.ack_ctrl = frame_struct_ShenShui.ack_ctrl;
temp_struct.DI0 = frame_struct_ShenShui.DI0;
temp_struct.DI1 = frame_struct_ShenShui.DI1;
temp_struct.sta = frame_struct_ShenShui.sta;
temp_struct.serial_num0 = frame_struct_ShenShui.serial_num0;
temp_struct.serial_num1 = frame_struct_ShenShui.serial_num1;
Frame_ack_IesBase(temp_struct,g_frame_temp_buf_ShenShui, g_frame_temp_len_ShenShui, p_send_buf, p_send_len);
}
/////////////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>,<2C><><EFBFBD><EFBFBD>Լ////////////////////
u8 crack_frame_BLE(u16 frame_lenth,u8 *frame_buffer)
{
frame_flag = 0;
if(SUCCESS_IES == crack_frame_BLE_Static(frame_lenth, frame_buffer))
{
frame_flag = 1;
return SUCCESS_IES;
}
if(SUCCESS_IES == crack_frame_ShenShui(frame_lenth, frame_buffer))
{
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
u8 up_deal_code_ble(void)
{
if(frame_flag)
{
return up_deal_code_ble_static();
}
else
{
return up_deal_code_ShenShui();
}
}
void Frame_ResetDealState_BLE(void)
{
if(frame_flag)
{
Frame_ResetDealState_BLE_Static();
}
else
{
Frame_ResetDealState_ShenShui();
}
}
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void Frame_ack_BLE(u8* p_send_buf, u16* p_send_len)
{
if(frame_flag)
{
Frame_CreatAck_BLE(p_send_buf, p_send_len);
}
else
{
Frame_ack_ShenShui(p_send_buf, p_send_len);
}
}
/************************************************************<2A><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢********************************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>еĵ<D0B5>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ״̬
static void Upload_RenewCurrentData(STRU_UPLOAD_FRAME* temp_frame)
{
MET_STATE temp_state; //״̬<D7B4><CCAC>
u8 temp1 = 0;
Fram_To_Float tmp_float;
u8* hight_flow;
DateTime tempRtcc_time;
tmp_float.gp22_u32 = Gp30CheckDataApp(2);
temp_frame->data.CurrentFlow.datas = (u32)(tmp_float.gp22_float*10);//<2F><>ǰ<EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>
temp_frame->data.CurrentFlowForward.datas = temp_frame->data.CurrentFlow.datas;//<2F><>ǰ<EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tmp_float.gp22_u32 = Gp30CheckDataApp(3);//<2F><>ǰ<EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_frame->data.CurrentFlowReverse.datas = (u32)(tmp_float.gp22_float*10);
//<2F><>ȡ:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4<>ֽ<EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(2<>ֽ<EFBFBD>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>(8<>ֽ<EFBFBD><><D4A4>)
RtccCheck_Hight_Flow(&hight_flow);
for(temp1 = 0; temp1 <14 ;temp1++)
{
temp_frame->data.DailyHighestFlowAndTime[temp1] = *(hight_flow+temp1);
}
//<2F><>ȡ<EFBFBD><C8A1>ѹֵ
temp_frame->data.UploadInfo.metinfo.bat_val.u16_data =HexToBcd16(PowerCheckValueSys());
temp_frame->data.UploadInfo.metinfo.bat_threshold_val = Sys_data_object.P1.voltage_low[0]+(Sys_data_object.P1.voltage_low[1]<<8);//Ƿѹ<C7B7><D1B9>ֵ3v
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2B(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)X2(<28><>/h)X24h=96B
/*
<EFBFBD>ϱ<EFBFBD>ʱͨ<EFBFBD><EFBFBD>UPLOAD_DATA_READ_HIS<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>ʱͨ<EFBFBD><EFBFBD>UPLOAD_DATA_STEP_FLOW<EFBFBD><EFBFBD>ȡ
*/
//<2F>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
RtccGetDateTime(&tempRtcc_time);//<2F>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
temp_frame->data.UploadTime[0] = tempRtcc_time.s.second;
temp_frame->data.UploadTime[1] = tempRtcc_time.s.minute;
temp_frame->data.UploadTime[2] = tempRtcc_time.s.hour;
temp_frame->data.UploadTime[3] = tempRtcc_time.s.day;
temp_frame->data.UploadTime[4] = tempRtcc_time.s.month;
temp_frame->data.UploadTime[5] = tempRtcc_time.s.year;
temp_frame->data.UploadTime[6] = 0x20;
//״̬<D7B4><CCAC>
temp_state = FrameGetByte();
temp_frame->data.StateBytes[0] = temp_state.stat0;
temp_frame->data.StateBytes[1] = temp_state.stat1;
temp_frame->data.StateBytes[2] = temp_state.stat2;
temp_frame->data.StateBytes[3] = temp_state.stat3;
temp_frame->data.StateBytes[4] = temp_state.stat4;
//<2F>ۼƻ<DBBC>Ծʱ<D4BE><CAB1>
temp_frame->data.DailyActiveTime.datas = GetEventUploadType();//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
}
static void SS_Store_CircleDataMachine(void)
{
switch (step_save_supplt)//<2F><><EFBFBD>ݴ洢
{
case SS_STATE_S0://<2F><EFBFBD><E6B4A2>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
if (RtccCheckMsgApp(RtccMsg_OtherProtl))
{
RtccClearMsgApp(RtccMsg_OtherProtl);
RtccGetDateTime(&shenshui_rtcc_time);
if((shenshui_rtcc_time.s.minute==0x00)||(shenshui_rtcc_time.s.minute==0x30))
{
FrameSetMsgApp(MsgSS_JianGeStore);//<2F><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>Ϣ
}
if ((shenshui_rtcc_time.s.hour == 0)&&(shenshui_rtcc_time.s.minute==0x00))//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RtccSetMsgApp(RtccMsg_DataSave);//0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FrameSetMsgApp(MsgSS_HisIndexStore);//0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
}
/**<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢ָ<E6B4A2><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>µ<EFBFBD>һ<EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢,<2C>ڼ<EFBFBD><DABC>ж<EFBFBD>дָ<D0B4><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>;*/
if(RtccCheckMsgApp(RtccMsg_DataSave))//0<><EFBFBD><EFBFBD><E6B6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RtccClearMsgApp(RtccMsg_DataSave);
FrameSetMsgApp(MsgBLE_AdvChange);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>
step_save_supplt = SS_STATE_S10;
}
else if(FrameCheckMsgApp(MsgSS_HisIndexStore))//0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
{
FrameClearMsgApp(MsgSS_HisIndexStore);
step_save_supplt = SS_STATE_S2;
}
else if(FrameCheckMsgApp(MsgSS_JianGeStore)) //<2F><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgSS_JianGeStore);
step_save_supplt = SS_STATE_S20;
}
else if(FrameCheckMsgApp(Msg_ClearHisOther))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(Msg_ClearHisOther);
step_save_supplt = SS_STATE_S40;
}
break;
}
/*0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
case SS_STATE_S10:
{
if(TASK_IDLE == EepIfIdle())
{
//(ֻ)<29><><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺͱ<DDBA><CDB1><EFBFBD>״̬
Upload_RenewCurrentData(&store_frame);
EepWrite(store_frame.buf, (FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)), CURRENT_DATA_INFO_LEN, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_S11;
}
break;
}
case SS_STATE_S11://<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
{
if(TASK_IDLE == EepIfIdle())
{
EepWrite(&store_frame.data.UploadTime[0], (FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+UPLOAD_TIME_ADDR), 7, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
/*0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
case SS_STATE_S2:
{
if(TASK_IDLE == EepIfIdle())
{
Sys_data_object.P1.histroy_w++;
if(Sys_data_object.P1.histroy_w>=PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_w=0;
}
Sys_data_object.P1.Supplemental_send_flag.datas &=(~(0x0001<<(Sys_data_object.P1.histroy_w)));//<2F><><EFBFBD><EFBFBD>λ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>־
EepWrite(&Sys_data_object.P1.Supplemental_send_flag.datas_map.data0, FRAME_NBIot_BUBAO_FLAG, 6, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢*/
case SS_STATE_S20://<2F><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD>:<3A><>ֹ<EFBFBD>״<EFBFBD><D7B4>ϵ<EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
{
if(EepIfIdle())
{
if( (shenshui_rtcc_time.s.year == store_frame.data.StepFlowStartTime[5])&&
(shenshui_rtcc_time.s.month == store_frame.data.StepFlowStartTime[4])&&
(shenshui_rtcc_time.s.day == store_frame.data.StepFlowStartTime[3]))
{
step_save_supplt = SS_STATE_S22;
}
else
{
EepRead(FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+STEP_FLOW_TIME_ADDR, &store_frame.data.StepFlowStartTime[0], 7, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_S21;
}
}
}
break;
case SS_STATE_S21:
{
if(EepIfIdle())
{
if( (shenshui_rtcc_time.s.year == store_frame.data.StepFlowStartTime[5])&&
(shenshui_rtcc_time.s.month == store_frame.data.StepFlowStartTime[4])&&
(shenshui_rtcc_time.s.day == store_frame.data.StepFlowStartTime[3]))
{
step_save_supplt = SS_STATE_S22;
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч,<2C><><EFBFBD>е<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺͱ<DDBA><CDB1><EFBFBD>״̬
Upload_RenewCurrentData(&store_frame);
//<2F>ϱ<EFBFBD><CFB1>źŲ<C5BA><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
store_frame.data.UploadInfo.metinfo.ecl_val =0;
store_frame.data.UploadInfo.metinfo.RSRP_val =0;
store_frame.data.UploadInfo.metinfo.single_val =0;
store_frame.data.UploadInfo.metinfo.snr_val =0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
store_frame.data.StepFlowStartTime[0]= 0x00;
store_frame.data.StepFlowStartTime[1]= 0x00;
store_frame.data.StepFlowStartTime[2]= 0x00;
store_frame.data.StepFlowStartTime[3]= shenshui_rtcc_time.s.day;
store_frame.data.StepFlowStartTime[4]= shenshui_rtcc_time.s.month;
store_frame.data.StepFlowStartTime[5]= shenshui_rtcc_time.s.year;
store_frame.data.StepFlowStartTime[6]= 0x20;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2B(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)X2(<28><>/h)X24h=96B
for(int i = 0; i <96 ;i++)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
store_frame.data.StepFlow[i] = 0;
}
if(Sys_data_object.P1.histroy_w>=PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_w=0;
}
EepWrite(store_frame.buf, (FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)), PACK_NUM_GPRS, &s_eep_complete_BLE);
}
}
}
break;
case SS_STATE_S22://<2F>洢ij<E6B4A2><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(EepIfIdle())
{
u16 temp_step_flow_addr=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
new_jiange_total_flow.gp22_u32 = Gp30CheckDataApp(2);
jiange_data.datas = (u16)((new_jiange_total_flow.gp22_float - old_jiange_total_flow.gp22_float)*10);
old_jiange_total_flow.gp22_u32 = new_jiange_total_flow.gp22_u32;
//<2F><><EFBFBD>㱾ʱ<E3B1BE>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢λ<E6B4A2><CEBB>
temp_step_flow_addr = FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+STEP_FLOW_START_ADDR +
BCD2HEX(shenshui_rtcc_time.s.hour)*4 + (BCD2HEX(shenshui_rtcc_time.s.minute)/30)*2;
EepWrite(&jiange_data.datas_map.data0, temp_step_flow_addr, 2, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_WAIT;
//RtccAdjustDateTime(1,1800-10);//<2F><><EFBFBD><EFBFBD>Уʱ<D0A3><CAB1>Сʱ//debug-----------------
}
}
break;
/*<2A>ϱ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>дָ<D0B4><D6B8>*/
case SS_STATE_S40:
{
if(TASK_IDLE == EepIfIdle())
{
for(int i=0;i<7;i++)
{
store_frame.data.StepFlowStartTime[i]= 0x00;
}
Sys_data_object.P1.histroy_w = 0;
Sys_data_object.P1.histroy_r = 0;
Sys_data_object.P1.Supplemental_send_flag.datas = 0;//<2F><><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>0
EepWrite(&Sys_data_object.P1.Supplemental_send_flag.datas_map.data0, FRAME_NBIot_BUBAO_FLAG, 6, &s_eep_complete_BLE);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
case SS_STATE_WAIT:
{
if(TASK_IDLE == EepIfIdle())
{
step_save_supplt = SS_STATE_S0;
}
break;
}
default:
{
break;
}
}
}
extern u8 sys_reverse_flow_state;
UNION_4U8TOU32 getBleWetState(void)
{
UNION_4U8TOU32 bel_state;
u16 tmp_stat = Gp30CheckErrDataApp();
bel_state.datas=0;
if(tmp_stat & 0x0001)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>>Q4<51><34><EFBFBD><EFBFBD><Q1
{
bel_state.datas_map.data0 |= 0x10;
}
if(tmp_stat & 0x0002)//ˮ<>³<EFBFBD><C2B3><EFBFBD><EFBFBD>¶ȵȼ<C8B5><C8BC><EFBFBD>Χ
{
bel_state.datas_map.data2 |= 0x02;
}
//if(tmp_stat & 0x0004) //<2F><>ת
if(sys_reverse_flow_state)
{
bel_state.datas_map.data0 |= 0x08;
}
if(tmp_stat & 0x0008)//<2F>ܵ<EFBFBD><DCB5><EFBFBD>ˮ
{
bel_state.datas_map.data2 |= 0x04;
}
if(tmp_stat&0x0010)//GPXX<58>
{
bel_state.datas_map.data0 |= 0x02;
}
if(tmp_stat&0x0020)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bel_state.datas_map.data0 |= 0x20;
}
if(tmp_stat&0x0040)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bel_state.datas_map.data0 |= 0x01;
}
if(tmp_stat&0x0080)//GP22ͨ<32>Ź<EFBFBD><C5B9><EFBFBD>
{
bel_state.datas_map.data0 |= 0x04;
}
if (1 == RtccIsError())//RTCC<43><43><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>
{
bel_state.datas_map.data0 |= 0x40;
}
if (10 == PowerCheckStatusSys())//<2F><><EFBFBD><EFBFBD>Ƿѹ
{
bel_state.datas_map.data0 |= 0x80;
}
if(TRUE == CheckTransducerErrorMsg())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
{
bel_state.datas_map.data2 |= 0x01;
}
if(TRUE == CheckDiftofCalibrationFlag())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD>ر<EFBFBD>־
{
bel_state.datas_map.data2 |= 0x08;
}
#if defined(VALVE)
//<2F><>ͨ<EFBFBD><CDA8>1;Ӧ<><D3A6><EFBFBD><EFBFBD>2;<3B><>ͨ<EFBFBD><CDA8>3;Ӧ<><D3A6><EFBFBD><EFBFBD>4;Ȩ<>޹<EFBFBD>5;<3B><><EFBFBD><EFBFBD><EFBFBD>쳣7
tmp_stat = ValveGetState();
if(VALVE_STATE_OPEN == tmp_stat)
{
bel_state.datas_map.data1 |= 0x01;
}
else if(VALVE_STATE_OPEN_EMERGENCY == tmp_stat)
{
bel_state.datas_map.data1 |= 0x02;
}
else if(VALVE_STATE_CLOSE == tmp_stat)
{
bel_state.datas_map.data1 |= 0x03;
}
else if(VALVE_STATE_CLOSE_EMERGENCY == tmp_stat)
{
bel_state.datas_map.data1 |= 0x04;
}
else if(VALVE_STATE_CLOSE_LOCK == tmp_stat)//Ȩ<>޹ط<DEB9>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪӦ<CEAA><D3A6><EFBFBD>ط<EFBFBD>
{
//bel_state.datas_map.data1 |= 0x05;
bel_state.datas_map.data1 |= 0x04;
}
/*else */if(Sys_data_object.P1.ies_valve_paras.valve_err)
{
bel_state.datas_map.data1 |= 0x07;
}
#endif
//<2F><><EFBFBD>ص<EFBFBD>ѹ
bel_state.datas_map.data3 |= (PowerCheckValueSys()/100)<<4;
bel_state.datas_map.data3 |= ((PowerCheckValueSys()/10)%10);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bel_state.datas_map.data3 |= 0x80;
return bel_state;
}
/*******************************************************************************
* @fun_name:NB_SS_Control_GetPara
* @brief :
* @param[in] :<EFBFBD><EFBFBD>ȡ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
u8 NB_SS_Control_GetPara(NB_SS_ControlParaTypeDef paraType)
{
switch(paraType)
{
case NB_HistroyReadIndex://<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵĶ<DDB5>ָ<EFBFBD><D6B8>
{
return Sys_data_object.P1.histroy_w;
}
case NB_UploadFailTimes://<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
{
if(BleGetPowerState()==BlePowerWrong)
{
return 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else
{
return 0;
}
}
default:
break;
}
return 0;
}
/*******************************************************************************
* @fun_name:NB_SS_Control_SetPara
* @param[in] :<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
******************************************************************************/
void NB_SS_Control_SetPara(NB_SS_ControlParaTypeDef paraType, u8 data)
{
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
void DataStoreInit(void)
{
Quanzhou_Store_InitApp();
old_jiange_total_flow.gp22_u32 = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢״̬<D7B4><CCAC>
void DataStoreMachine(void)
{
SS_Store_CircleDataMachine();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
Quanzhou_Store_Machine();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
u8 DataStoreIfIdle(void)
{
if((step_save_supplt == SS_STATE_S0)&&(QuanzhouStore_IfSleep()==TRUE))
{
return TRUE;
}
else
{
return FALSE;
}
}
#endif