663 lines
19 KiB
C
663 lines
19 KiB
C
|
#include "sys_config.h"
|
|||
|
#if UPLOAD_MODE_2
|
|||
|
#include "UWater_frame_app.h"
|
|||
|
#include "UWater_eeprom_driver.h"
|
|||
|
#include "UWater_Timer1us_driver.h"
|
|||
|
#include "UWater_lptimer_driver.h"
|
|||
|
#include "UWater_rtcc_driver.h"
|
|||
|
#include "UWater_valve_driver.h"
|
|||
|
#include "UWater_Lcd_driver.h"
|
|||
|
#include "eeprom_app.h"
|
|||
|
#include "UWater_rtcc_app.h"
|
|||
|
#include "UWater_power_app.h"
|
|||
|
#include "UWater_gp22_app.h"
|
|||
|
#include "UWater_DataTools_App.h"
|
|||
|
#include "UWater_key_app.h"
|
|||
|
#include "UWater_pt_app.h"
|
|||
|
#include "UWater_DebugPrint.h"
|
|||
|
#include "UWater_Valve_app.h"
|
|||
|
#include <string.h>
|
|||
|
#include "UWater_sys.h"
|
|||
|
#include "soe.h"
|
|||
|
#include "sys_processor_ble.h"
|
|||
|
|
|||
|
static u8 s_upload_eep_complete=0;
|
|||
|
static u8 save_freeze_sate = SAVE_FREEZE_S0; //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
static u8 data_save_judge_flag = FALSE; //<2F><><EFBFBD>涳<EFBFBD><E6B6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
static u8 sys_deal_judge_flag = FALSE; //ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
|||
|
static DateTime sys_rtcc_time; //<2F><><EFBFBD>ڻ<EFBFBD>ȡϵͳ<CFB5><CDB3>ǰʱ<C7B0><CAB1>
|
|||
|
static u16 sys_temp_min_hex;//<2F><><EFBFBD><EFBFBD>ת16<31><36><EFBFBD>Ƹ<EFBFBD>ʽ
|
|||
|
//RTC<54><43><EFBFBD>ϳ<EFBFBD>ʱʱ<CAB1><CAB1>
|
|||
|
static u32 rtcc_err_check_time=0;
|
|||
|
static u8 rtcc_err_check_count=0;
|
|||
|
static u8 sys_rtcc_clk_source=0;
|
|||
|
static u8 sys_rtcc_check_flag=FALSE;
|
|||
|
TYP_STATE_SS ble_monitor_state=SS_STATE_S0;
|
|||
|
|
|||
|
//<2F>㲥<EFBFBD><E3B2A5><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
|||
|
u8 ble_adv_buf[13];
|
|||
|
//״̬<D7B4><CCAC>
|
|||
|
UNION_4U8TOU32 met_state_old;
|
|||
|
UNION_4U8TOU32 met_state_new;
|
|||
|
u8 sys_reverse_flow_state=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD>
|
|||
|
RTCC_To_Float sys_total_flow_new;
|
|||
|
RTCC_To_Float sys_total_flow_old;
|
|||
|
RTCC_To_Float sys_total_re_flow_new;
|
|||
|
RTCC_To_Float sys_total_re_flow_old;
|
|||
|
//<2F><>ɢ<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
|||
|
//#define __no_init __attribute__((zero_init))
|
|||
|
//__no_init volatile u8 upload_again_cnt_copy __attribute__((section(".ARM.__at_0x20007F34")));
|
|||
|
|
|||
|
/****************************************ʱ<><CAB1>ɨ<EFBFBD>衢<EFBFBD><E8A1A2>Ϣ<EFBFBD>ַ<EFBFBD>**********************/
|
|||
|
|
|||
|
void MinuteEventScan(void)
|
|||
|
{
|
|||
|
if (0x02 == (RtccCheckMsg() & 0x02))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
{
|
|||
|
RtccClearMsg(1);
|
|||
|
RtccSetMsgApp(RtccMsg_UploadInTime); //RTCC<43><43>ʱ<EFBFBD>ϱ<EFBFBD>
|
|||
|
RtccSetMsgApp(RtccMsg_OtherProtl); //<2F><EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
FrameSetMsgApp(Msg_FrozenStore); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
data_save_judge_flag = TRUE; //<2F><><EFBFBD>涳<EFBFBD><E6B6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sys_deal_judge_flag = TRUE; //ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
|||
|
RtccSetMsgApp(RtccMsg_ValveActive);
|
|||
|
}
|
|||
|
}
|
|||
|
//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
|||
|
void SysDealAppMachine(void)
|
|||
|
{
|
|||
|
if(sys_deal_judge_flag)
|
|||
|
{
|
|||
|
sys_deal_judge_flag = FALSE;
|
|||
|
rtcc_err_check_count=0;
|
|||
|
RtccGetDateTime(&sys_rtcc_time);
|
|||
|
if(0 == sys_rtcc_time.s.minute) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
{
|
|||
|
FrameSetMsgApp(MsgTouchKeyReset);//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
if (sys_rtcc_time.s.hour == 0x00)//0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
FrameSetMsgApp(MsgTchKey_ClearKeyLimit);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
|
|||
|
sys_rtcc_check_flag = TRUE;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1>
|
|||
|
BleClearResetCount();//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD>ո<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
if((BCD2HEX(sys_rtcc_time.s.day)%Sys_data_object.P1.func_cfg_bytes[22])==0)
|
|||
|
{
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
if(sys_rtcc_time.s.hour == 0x02) //ÿ<><C3BF>2<EFBFBD><32><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
{
|
|||
|
RtccSetMsgApp(RtccMsg_Transducer_Check);
|
|||
|
if(TRUE == CheckDiftofCalibrationFlag())
|
|||
|
{
|
|||
|
RtccSetMsgApp(RtccMsg_DiftofCalibration);//ÿ<><C3BF>2<EFBFBD><32><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F>Ǽ춨<C7BC><ECB6A8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
|
|||
|
if (10 == LcdCheckStateApp()) //<2F>Ǽ춨״̬
|
|||
|
{
|
|||
|
PowerUnSleepSumAddSys();
|
|||
|
}
|
|||
|
}
|
|||
|
/**
|
|||
|
<EFBFBD>ⲿ32768<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
1<EFBFBD><EFBFBD>main<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD>ղ<EFBFBD><EFBFBD><EFBFBD>RTC<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>RTCʱ<EFBFBD>ӡ<EFBFBD>
|
|||
|
2<EFBFBD><EFBFBD><EFBFBD>춨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>ͨ<EFBFBD><EFBFBD>1us<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䳬<EFBFBD><EFBFBD>2<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>RTCʱ<EFBFBD>ӡ<EFBFBD>
|
|||
|
3<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
if(Timer1usGetTick() - rtcc_err_check_time > 1000000)//1<><31>,<2C><>ֹ<EFBFBD>춨<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
|||
|
{
|
|||
|
rtcc_err_check_time = Timer1usGetTick();
|
|||
|
rtcc_err_check_count++;
|
|||
|
if(rtcc_err_check_count > 120)
|
|||
|
{
|
|||
|
rtcc_err_check_count = 0;
|
|||
|
Meter_ResetCountAdd(0x08);
|
|||
|
NVIC_SystemReset();
|
|||
|
}
|
|||
|
}
|
|||
|
if((sys_rtcc_check_flag==TRUE)&&(LcdCheckStateApp() == 10))//<2F>Ǽ춨״̬
|
|||
|
{
|
|||
|
sys_rtcc_check_flag = FALSE;
|
|||
|
if(RTC_ClkSource() == 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>RC
|
|||
|
{
|
|||
|
sys_rtcc_clk_source = RtccInit();
|
|||
|
if(sys_rtcc_clk_source == 0)//<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿRC
|
|||
|
{
|
|||
|
LPTimer1Init(sys_rtcc_clk_source);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void SysDealAppPreSleep(void)
|
|||
|
{
|
|||
|
rtcc_err_check_count = 0;
|
|||
|
|
|||
|
if(BleGetPowerState()==BlePowerOk)
|
|||
|
{
|
|||
|
if(Sys_data_object.P1.func_cfg_bytes[0] > 0)//<2F><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(RtccCheckTimer(RTCC_BLE_ACTIVE_TIME)==0)//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
BleForcePowerOff(BlePowerFactory);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ѯ<EFBFBD>¼<EFBFBD><C2BC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u8 GetEventUploadType(void)
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
//<2F>п<EFBFBD><D0BF><EFBFBD>
|
|||
|
u8 FixedTimeNbIoTUploadIfIdle(void)
|
|||
|
{
|
|||
|
return TASK_IDLE;
|
|||
|
}
|
|||
|
/*******************************<2A><><EFBFBD>ݴ洢******************************/
|
|||
|
|
|||
|
IES_PULSE_DAY_MAX_FLOW ies_pulse_day_max_flow;
|
|||
|
static void SysCheckFlowMinMax(DateTime alarm_time)
|
|||
|
{
|
|||
|
static u16 pulse_day_max_flow_time_temp;
|
|||
|
static u32 old_total_speed = 0;
|
|||
|
static u32 new_total_speed = 0;
|
|||
|
static u8 date_flag = 0;
|
|||
|
RTCC_To_Float temp_to_gloat;//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ר<EFBFBD><D7A8>
|
|||
|
if((0 == alarm_time.s.hour) && (0 == alarm_time.s.minute)) //ÿ<><C3BF>0<EFBFBD><30>ˢ<EFBFBD><CBA2><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
old_total_speed = 0;
|
|||
|
pulse_day_max_flow_time_temp =0;
|
|||
|
date_flag = 0;
|
|||
|
RtccGetDateTime(&alarm_time);
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[0] = alarm_time.s.second;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[1] = alarm_time.s.minute;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[2] = alarm_time.s.hour;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[3] = alarm_time.s.weekday;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[4] = alarm_time.s.day;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[5] = alarm_time.s.month;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[6] = alarm_time.s.year;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[7] = 0x20;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
new_total_speed = Gp30CheckDataApp(GP30_APP_INS_FLOW);
|
|||
|
if((0.9*old_total_speed) < new_total_speed < (1.1*old_total_speed))
|
|||
|
{
|
|||
|
pulse_day_max_flow_time_temp++;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ies_pulse_day_max_flow.pulse_continue_time.to_uint16 = pulse_day_max_flow_time_temp*60;
|
|||
|
|
|||
|
temp_to_gloat.gp22_float = new_total_speed; //˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD> ˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ0.01L/H<><48>4<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ies_pulse_day_max_flow.pulse_max_flow.to_uint32 = (u32)(temp_to_gloat.gp22_float / (float)65536.00)/60; //ƽ̨ת<CCA8><D7AA><EFBFBD><EFBFBD>ÿСʱ<D0A1><CAB1>ˮ<EFBFBD><CBAE>
|
|||
|
//<2F>жϿ<D0B6>ʼʱ<CABC><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(date_flag==1)
|
|||
|
{
|
|||
|
date_flag = 0;
|
|||
|
RtccGetDateTime(&alarm_time);
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[0] = alarm_time.s.second;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[1] = alarm_time.s.minute;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[2] = alarm_time.s.hour;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[3] = alarm_time.s.weekday;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[4] = alarm_time.s.day;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[5] = alarm_time.s.month;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[6] = alarm_time.s.year;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[7] = 0x20;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(new_total_speed <= (0.9*old_total_speed))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
{
|
|||
|
pulse_day_max_flow_time_temp = 0;
|
|||
|
date_flag = 1;
|
|||
|
}
|
|||
|
else if(new_total_speed >= (1.1*old_total_speed))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
old_total_speed = new_total_speed;
|
|||
|
pulse_day_max_flow_time_temp =0;
|
|||
|
date_flag = 0;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[0] = alarm_time.s.second;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[1] = alarm_time.s.minute;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[2] = alarm_time.s.hour;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[3] = alarm_time.s.weekday;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[4] = alarm_time.s.day;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[5] = alarm_time.s.month;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[6] = alarm_time.s.year;
|
|||
|
ies_pulse_day_max_flow.pulse_flow_time[7] = 0x20;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void RtccCheck_Hight_Flow(u8 **addr)
|
|||
|
{
|
|||
|
*addr = ies_pulse_day_max_flow.byte;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void SaveFreezeData(void)
|
|||
|
{
|
|||
|
switch(save_freeze_sate)
|
|||
|
{
|
|||
|
case SAVE_FREEZE_S0:
|
|||
|
{
|
|||
|
if(data_save_judge_flag)
|
|||
|
{
|
|||
|
data_save_judge_flag = FALSE;
|
|||
|
RtccGetDateTime(&sys_rtcc_time);
|
|||
|
sys_temp_min_hex = (sys_rtcc_time.s.minute >> 4)*10 + (sys_rtcc_time.s.minute & 0x0F);
|
|||
|
if(0 ==(sys_temp_min_hex % 5))//5<><35><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>
|
|||
|
{
|
|||
|
RtccAppCheckMiJi(sys_rtcc_time);
|
|||
|
}
|
|||
|
if(0 == sys_rtcc_time.s.minute) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
{
|
|||
|
save_freeze_sate = SAVE_FREEZE_S1;
|
|||
|
}
|
|||
|
SysCheckFlowMinMax(sys_rtcc_time);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SAVE_FREEZE_S1:
|
|||
|
{
|
|||
|
if (EepIfIdle())
|
|||
|
{
|
|||
|
Sys_data_object.ee_data.data.work_hour++;//<2F>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
EepWrite(Sys_data_object.ee_data.byte, EE_FIRST_USE_ADDR, sizeof (RTCC_EE_DATA), &s_upload_eep_complete);
|
|||
|
save_freeze_sate = SAVE_FREEZE_S2;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SAVE_FREEZE_S2://<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ж<EFBFBD>
|
|||
|
{
|
|||
|
if (EepIfIdle())
|
|||
|
{
|
|||
|
if(0 == sys_rtcc_time.s.hour) //ÿ<><C3BF>0<EFBFBD><30>
|
|||
|
{
|
|||
|
if(Sys_data_object.P1.func_cfg_bytes[0] > 0)
|
|||
|
{
|
|||
|
Sys_data_object.P1.func_cfg_bytes[0]--;
|
|||
|
EepWrite(&Sys_data_object.P1.func_cfg_bytes[0],ee_addr_compute((u8*)(&Sys_data_object.P1.func_cfg_bytes[0])),1,&s_upload_eep_complete);
|
|||
|
}
|
|||
|
}
|
|||
|
save_freeze_sate = SAVE_FREEZE_S3;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SAVE_FREEZE_S3://<2F><><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
{
|
|||
|
if(TASK_IDLE == EepIfIdle())
|
|||
|
{
|
|||
|
EepWrite(&(Sys_data_object.P1.run_information_object.total_use_sum_times_sec.to_uint8[0]), EEP_FRMAE_BATTERY_ENERGY, sizeof(Sys_data_object.P1.run_information_object), &s_upload_eep_complete);
|
|||
|
save_freeze_sate = SAVE_FREEZE_S7;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SAVE_FREEZE_S7:
|
|||
|
{
|
|||
|
if (EepIfIdle())
|
|||
|
{
|
|||
|
save_freeze_sate = SAVE_FREEZE_S0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
save_freeze_sate = SAVE_FREEZE_S0;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void SysBleStateMonitor(void)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>仯1<E4BBAF><31>
|
|||
|
sys_total_flow_new.gp22_u32 = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW);
|
|||
|
if(((sys_total_flow_new.gp22_float - sys_total_flow_old.gp22_float)>100)||
|
|||
|
((sys_total_flow_old.gp22_float - sys_total_flow_new.gp22_float)>100))//1<><31><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
sys_total_flow_old.gp22_u32 = sys_total_flow_new.gp22_u32;
|
|||
|
FrameSetMsgApp(MsgBLE_AdvChange);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ת
|
|||
|
sys_total_re_flow_new.gp22_u32 = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW_REVERSE);
|
|||
|
if((sys_total_re_flow_new.gp22_float - sys_total_re_flow_old.gp22_float)>1)//10L
|
|||
|
{
|
|||
|
sys_total_re_flow_old.gp22_u32 = sys_total_re_flow_new.gp22_u32;
|
|||
|
sys_reverse_flow_state=1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
}
|
|||
|
if((sys_total_flow_new.gp22_float - sys_total_flow_old.gp22_float)>1)//10L
|
|||
|
{
|
|||
|
sys_total_re_flow_old.gp22_u32 = sys_total_re_flow_new.gp22_u32;//<2F><><EFBFBD><EFBFBD>10L,<2C><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD>ʼ
|
|||
|
sys_reverse_flow_state=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯
|
|||
|
met_state_new = getBleWetState();
|
|||
|
if(met_state_old.datas != met_state_new.datas)
|
|||
|
{
|
|||
|
met_state_old.datas = met_state_new.datas;
|
|||
|
FrameSetMsgApp(MsgBLE_AdvChange);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>쳣<EFBFBD><ECB3A3>λ
|
|||
|
if(BleCheckIfResetFlag())//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
{
|
|||
|
BleClrIfResetFlag();
|
|||
|
if(BleIfIdle()==TASK_IDLE)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
|||
|
if(BleIfIdle()==TASK_IDLE)
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(MsgBLE_ConfigChange))
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_ConfigChange);
|
|||
|
BleChangeAdvParaTask();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void SysBleMonitorMachine()
|
|||
|
{
|
|||
|
switch(ble_monitor_state)
|
|||
|
{
|
|||
|
case SS_STATE_S0:
|
|||
|
{
|
|||
|
if(Sys_data_object.P1.func_cfg_bytes[0] == 0)//<2F><><EFBFBD>dz<EFBFBD><C7B3><EFBFBD>ģʽ
|
|||
|
{
|
|||
|
if(BleGetCurConState() == CON_ING)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);//<2F><><EFBFBD><EFBFBD>5s<35>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
setBleReadAccessFlag(0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>־
|
|||
|
ble_monitor_state = SS_STATE_S20;
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgBLE_AdvChange))//<2F><><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>(<28><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>\<5C>³<EFBFBD>ֵ\<5C>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\<5C><><EFBFBD><EFBFBD><EFBFBD>仯1<E4BBAF><31>)
|
|||
|
{
|
|||
|
if(BleIfIdle()==TASK_IDLE)
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_AdvChange);
|
|||
|
ble_monitor_state = SS_STATE_S3;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgAddr_Change))//<2F>ı<DEB8><C4B1><EFBFBD>ַ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgAddr_Change);
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(Msg_FactoryBleActive))
|
|||
|
{
|
|||
|
FrameClearMsgApp(Msg_FactoryBleActive);
|
|||
|
if(RtccCheckTimer(RTCC_BLE_ACTIVE_TIME)==0)//ֻ<>л<EFBFBD><D0BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʡÿ<CAA1>ճ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
BleClearResetCount();//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD>ո<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
RtccSetTimer(RTCC_BLE_ACTIVE_TIME,600);//<2F><><EFBFBD><EFBFBD>ģʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
if(RtccCheckTimer(RTCC_BLE_ACTIVE_TIME)!=0)
|
|||
|
{
|
|||
|
if(BleGetCurConState() == CON_ING)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);//<2F><><EFBFBD><EFBFBD>5s<35>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
setBleReadAccessFlag(0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>־
|
|||
|
ble_monitor_state = SS_STATE_S20;
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgBLE_AdvChange))//<2F><><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>(<28><>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>\<5C>³<EFBFBD>ֵ\<5C>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>\<5C><><EFBFBD><EFBFBD><EFBFBD>仯1<E4BBAF><31>)
|
|||
|
{
|
|||
|
if(BleIfIdle()==TASK_IDLE)
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_AdvChange);
|
|||
|
ble_monitor_state = SS_STATE_S3;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgAddr_Change))//<2F>ı<DEB8><C4B1><EFBFBD>ַ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgAddr_Change);
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S20://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(MsgBLE_ReadData))//<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>(<28><><EFBFBD><EFBFBD>֡)
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_ReadData);
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,300);//30s
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_ALL90S,900);//90s
|
|||
|
ble_monitor_state = SS_STATE_S21;
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgBLE_RevData))//<2F>յ<EFBFBD><D5B5>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡,<2C>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_RevData);
|
|||
|
BleConMacTask(CON_STOP_ORDER, NULL);
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);
|
|||
|
ble_monitor_state = SS_STATE_S22;
|
|||
|
}
|
|||
|
else if(BleGetCurConState() == CON_END)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S22;
|
|||
|
}
|
|||
|
else if(Check100msTimer(TIMER_100MS_BLE_CON_REV30S)==0)//5s<35><73>ʱû<CAB1>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
BleConMacTask(CON_STOP_ORDER, NULL);
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);
|
|||
|
ble_monitor_state = SS_STATE_S22;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S21://<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(MsgBLE_RevData))//<2F>յ<EFBFBD><D5B5><EFBFBD>ָ<EFBFBD><D6B8>,<2C><>ʱ30<33><30>
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_RevData);
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,300);//30
|
|||
|
}
|
|||
|
else if(BleGetCurConState() == CON_END)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S22;
|
|||
|
}
|
|||
|
else if(FrameCheckMsgApp(MsgBLE_OtaEnter))//<2F><><EFBFBD><EFBFBD>OTA
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_OtaEnter);
|
|||
|
ble_monitor_state = SS_STATE_S5;
|
|||
|
}
|
|||
|
else if((Check100msTimer(TIMER_100MS_BLE_CON_REV30S)==0)||(Check100msTimer(TIMER_100MS_BLE_CON_ALL90S)==0))//<2F><>ʱ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
BleConMacTask(CON_STOP_ORDER, NULL);
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);
|
|||
|
ble_monitor_state = SS_STATE_S22;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S22://<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
|||
|
{
|
|||
|
if(BleGetCurConState() == CON_END)
|
|||
|
{
|
|||
|
LcdDisplayActiveGPRS(0);//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
else if(Check100msTimer(TIMER_100MS_BLE_CON_REV30S)==0)//<2F><>ʱû<CAB1>жϿ<D0B6><CFBF><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
LcdDisplayActiveGPRS(0);//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S3://<2F><><EFBFBD>¹㲥<C2B9><E3B2A5>Ϣ
|
|||
|
{
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
QZ_U32_To_Float temp_float_data;
|
|||
|
UNION_4U8TOU32 temp_data1;
|
|||
|
UNION_2U8TOU16 temp_data2;
|
|||
|
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
|
|||
|
temp_data1.datas = (u32)temp_float_data.gp22_float*10;
|
|||
|
ble_adv_buf[0] = 12;
|
|||
|
ble_adv_buf[12]=0;
|
|||
|
//<2F>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ble_adv_buf[1] = temp_data1.data_buf[0];
|
|||
|
ble_adv_buf[2] = temp_data1.data_buf[1];
|
|||
|
ble_adv_buf[3] = temp_data1.data_buf[2];
|
|||
|
ble_adv_buf[4] = temp_data1.data_buf[3];
|
|||
|
//<2F>¶<EFBFBD>
|
|||
|
temp_float_data.gp22_float = TempCheckValueApp();
|
|||
|
if(temp_float_data.gp22_float<0)//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>0
|
|||
|
{
|
|||
|
temp_data1.datas = -(temp_float_data.gp22_float*100);
|
|||
|
temp_data2.datas = 0x8000|temp_data1.datas;
|
|||
|
}
|
|||
|
else//<2F><><EFBFBD>´<EFBFBD><C2B4><EFBFBD>0
|
|||
|
{
|
|||
|
temp_data2.datas = (u16)(temp_float_data.gp22_float*100);
|
|||
|
}
|
|||
|
ble_adv_buf[5] = temp_data2.data_buf[0];
|
|||
|
ble_adv_buf[6] = temp_data2.data_buf[1];
|
|||
|
//״̬<D7B4><CCAC>
|
|||
|
UNION_4U8TOU32 temp_MetState;
|
|||
|
temp_MetState = getBleWetState();
|
|||
|
ble_adv_buf[7] = temp_MetState.datas_map.data0;
|
|||
|
ble_adv_buf[8] = temp_MetState.datas_map.data1;
|
|||
|
ble_adv_buf[9] = temp_MetState.datas_map.data2;
|
|||
|
ble_adv_buf[10]= temp_MetState.datas_map.data3;
|
|||
|
//<2F><><EFBFBD><EFBFBD>֡У<D6A1><D0A3><EFBFBD><EFBFBD>
|
|||
|
ble_adv_buf[11] = 0;
|
|||
|
for(int i=1;i<11;i++)
|
|||
|
{
|
|||
|
ble_adv_buf[11] += ble_adv_buf[i];
|
|||
|
}
|
|||
|
//ATָ<54><D6B8>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
|||
|
for(int i=1;i<12;i++)
|
|||
|
{
|
|||
|
ble_adv_buf[12] += ble_adv_buf[i];
|
|||
|
}
|
|||
|
Set100msTimer(TIMER_100MS_BLE_CON_REV30S,50);
|
|||
|
ble_monitor_state = SS_STATE_S4;
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S4://<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>,//
|
|||
|
{
|
|||
|
if(BleIfIdle()==TASK_IDLE)
|
|||
|
{
|
|||
|
if(BleUpdataAdvDataTask(ble_adv_buf)==TRUE)
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
}
|
|||
|
else if(BleGetCurConState() == CON_END)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
else if(Check100msTimer(TIMER_100MS_BLE_CON_REV30S)==0)//<2F><>ʱû<CAB1>и<EFBFBD><D0B8>³ɹ<C2B3>,<2C><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
{
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case SS_STATE_S5://OTA<54><41><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD>Ƹ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(FrameCheckMsgApp(MsgBLE_OtaExit))//<2F>˳<EFBFBD>OTA
|
|||
|
{
|
|||
|
FrameClearMsgApp(MsgBLE_OtaExit);
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
{
|
|||
|
ble_monitor_state = SS_STATE_S0;
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F>п<EFBFBD><D0BF><EFBFBD>
|
|||
|
u8 BleConnectIfIdle(void)
|
|||
|
{
|
|||
|
if(ble_monitor_state == SS_STATE_S0)
|
|||
|
{
|
|||
|
return TASK_IDLE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return TASK_BUSY;
|
|||
|
}
|
|||
|
}
|
|||
|
u8 GetMcuResetSouce(void)
|
|||
|
{
|
|||
|
u8 reset_souce;
|
|||
|
reset_souce = Reset_GetFlag(ResetFlagMskRstb);//RESET<45>Ÿ<EFBFBD>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskSysreq);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskLockup);//ϵͳ<CFB5>쳣<EFBFBD><ECB3A3>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskPca);//PCA<43><41>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskWdt);//<2F><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskLvd);//<2F>͵<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>⸴λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskPor1_5V);//1.5V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
reset_souce |= Reset_GetFlag(ResetFlagMskPor5V);//5V<35><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
reset_souce <<= 1;
|
|||
|
|
|||
|
return reset_souce;
|
|||
|
}
|
|||
|
/*******************************************************************************
|
|||
|
* @fun_name: SystemProcessor
|
|||
|
* @brief : <EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
|
|||
|
* @param[in] : None
|
|||
|
* @param[out]: None
|
|||
|
* @retval : None
|
|||
|
* @other :
|
|||
|
******************************************************************************/
|
|||
|
void SystemProcessor(void)
|
|||
|
{
|
|||
|
MinuteEventScan();
|
|||
|
SysDealAppMachine();
|
|||
|
SaveFreezeData();
|
|||
|
DataStoreMachine();
|
|||
|
SysBleMonitorMachine();
|
|||
|
SysBleStateMonitor();
|
|||
|
}
|
|||
|
|
|||
|
void SystemProcessorInit(void)
|
|||
|
{
|
|||
|
SaveNewSoe(SOE_SY_SYS_RESET, GetMcuResetSouce());//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
if(Reset_GetFlag(ResetFlagMskWdt))//<2F><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ
|
|||
|
{
|
|||
|
FrameSetMsgApp(Msg_WdtReset); //<2F><><EFBFBD>ڸ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
if(Reset_GetFlag(ResetFlagMskPor5V))//Ƿѹ<C7B7><D1B9>Ӳ<EFBFBD><D3B2>λ
|
|||
|
{
|
|||
|
FrameSetMsgApp(Msg_Por5VReset); //GP30<33><30>λ
|
|||
|
}
|
|||
|
|
|||
|
Reset_ClearFlagAll();//<2F>帴λ<E5B8B4><CEBB>ʶ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
DataStoreInit();
|
|||
|
BleStartInitTask();//<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
RtccSetTimer(RTCC_BLE_ACTIVE_TIME,60);//<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>1<EFBFBD><31><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
met_state_new = getBleWetState();
|
|||
|
met_state_old.datas = met_state_new.datas;
|
|||
|
sys_total_flow_new.gp22_u32 = Gp30CheckDataApp(GP30_APP_TOTAL_FLOW);
|
|||
|
sys_total_flow_old.gp22_u32 = sys_total_flow_new.gp22_u32;
|
|||
|
sys_total_re_flow_old.gp22_u32 = sys_total_re_flow_new.gp22_u32;
|
|||
|
}
|
|||
|
|
|||
|
u8 SystemProcessorIfSleep(void)
|
|||
|
{
|
|||
|
if((DataStoreIfIdle() == TRUE)&&(BleConnectIfIdle() == TASK_IDLE))
|
|||
|
{
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|