X1UWaterWmbusISK/app/nb_upload_monitor.c

605 lines
17 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#include "Uwater_frame_app.h"
#include "sys_processor.h"
#include "nb_upload_monitor.h"
#include "UWater_DataTools_App.h"
#include "UWater_ir_app.h"
#include "UWater_eeprom_driver.h"
#include "UWater_power_app.h"
#include "UWater_valve_driver.h"
#include <string.h>
#if UPLOAD_MODE_1
static u8 s_eep_complete_up_monitor=0; //ee<65><EFBFBD><E6B4A2>־
static u8 up_monitor_para_buf[UP_PARA_NUM];//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static ENUM_APP_LIFE_CNT nb_life_time_state=APP_LIFE_CNT_S0;//NB<4E><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static ENUM_APP_LIFE_CNT ir_life_time_state=APP_LIFE_CNT_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static u32 nb_life_time_start_time=0;//NB<4E><42><EFBFBD>ʼʱ<CABC><CAB1>
static u32 ir_life_time_start_time=0;//<2F><><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
static u32 total_wake_time = 0;//<2F><><EFBFBD><EFBFBD><E2BBBD>ʱ<EFBFBD><CAB1>
static u16 life_time_cnt = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 life_time_minute_cnt = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u16 tmp_life_time = 0;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
static float remain_percent_use_life;
static float remain_percent_use_energy;
static float remain_para_energy_life;
//<2F>ϱ<EFBFBD>ƫ<EFBFBD><C6AB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 up_delay_para_cnt=0;
static ENUM_APP_LIFE_CNT valve_life_time_state=APP_LIFE_CNT_S0;//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
#if defined(VALVE)
static u32 valve_life_time_start_time=0;//<2F><><EFBFBD>ؿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
void setUploadControlPara(ENUM_UPLOAD_CONTROL paraId, u8 paraData)
{
if(paraId<UP_PARA_NUM)
{
up_monitor_para_buf[paraId] = paraData;
}
}
//<2F><>ȡ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
u8 getUploadControlPara(ENUM_UPLOAD_CONTROL paraId)
{
if(paraId<UP_PARA_NUM)
{
return up_monitor_para_buf[paraId];
}
return 0;
}
//NB<4E><42><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4BCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
void AppLifeTimeCountMachine(void)
{
if(RtccCheckMsg()&0x10)//<2F><><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>NB<4E><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RtccClearMsg(4);
life_time_cnt++;
life_time_cnt %= HOUR_TO_SECOND;
}
if(RtccCheckMsg()&0x20)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
{
RtccClearMsg(5);
life_time_minute_cnt++;
if(life_time_minute_cnt>=60)
{
life_time_minute_cnt=0;
Sys_data_object.P1.run_information_object.total_use_sum_times_sec.to_uint32 += HOUR_TO_SECOND;//<2F>ۼ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= ONE_HOUR_STATIC_ENERGY;
}
}
//NB<4E><42><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
switch(nb_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if(TASK_BUSY == FixedTimeNbIoTUploadIfIdle())
{
nb_life_time_start_time = life_time_cnt;
nb_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if(TASK_IDLE == FixedTimeNbIoTUploadIfIdle())
{
s16 s_temp_snr=0;
s16 s_temp_rsrp=0;
if(life_time_cnt >= nb_life_time_start_time)
{
tmp_life_time = life_time_cnt - nb_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - nb_life_time_start_time;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
if(getUploadControlPara(UP_BOOT_MSG) == UPDATE_MODE_DIFF)
{
tmp_life_time += 600;//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
}
else if(getUploadControlPara(UP_BOOT_MSG) == UPDATE_MODE_NORMAL)
{
tmp_life_time += 1800;//<2F><><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
}
setUploadControlPara(UP_BOOT_MSG,0);
//<2F><>¼NB<4E><42><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>NB<4E><42>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.nb_use_sum_times_sec.to_uint32 += tmp_life_time;
Sys_data_object.P1.run_information_object.nb_upload_happen_num++;
//<2F><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>ź<EFBFBD>ֵ<EFBFBD>Լ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ӧ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NbiotGetSNR(&s_temp_snr);
NbiotGetRSRP(&s_temp_rsrp);
s_temp_snr /=10;
s_temp_rsrp /=10;
if(getUploadControlPara(UP_CGATT_FAIL)==TRUE)//<2F><><EFBFBD>η<EFBFBD><CEB7><EFBFBD>ʧ<EFBFBD><CAA7>
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_FAIL_ONE_SECOND_ENERGY*tmp_life_time;
//<2F>ϱ<EFBFBD>ƫ<EFBFBD><C6AB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
if(GetEventUploadType()==UPLOAD_TYPE_FIX_TIME)//<2F><>ʱ<EFBFBD>ϱ<EFBFBD>
{
up_delay_para_cnt++;
up_delay_para_cnt = (up_delay_para_cnt%7);
setUploadControlPara(UP_DELAY_COUNT,up_delay_para_cnt);
setUploadControlPara(UP_AT_ALL_MSG,TRUE); //<2F>ϱ<EFBFBD>ʧ<EFBFBD><CAA7>,<2C>´<EFBFBD><C2B4>ϱ<EFBFBD>ʹ<EFBFBD><CAB9>ȫָ<C8AB><D6B8><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ
}
}
else if(s_temp_snr < 0)//<2F><>ֵ,<2C>źźܲ<C5BA>
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_WEAK_ONE_SECOND_ENERGY*tmp_life_time;
}
else if(s_temp_rsrp < -120)//120
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_WEAK_ONE_SECOND_ENERGY*tmp_life_time;
}
else if(s_temp_rsrp < -115)//115~120
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_120_ONE_SECOND_ENERGY*tmp_life_time;
}
else if(s_temp_rsrp < -105)//105~115
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_115_ONE_SECOND_ENERGY*tmp_life_time;
}
else if(s_temp_rsrp < -90)//90~105
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_105_ONE_SECOND_ENERGY*tmp_life_time;
}
else//> -90
{
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= NB_UPLOAD_RSRP_90_ONE_SECOND_ENERGY*tmp_life_time;
}
nb_life_time_state = APP_LIFE_CNT_S2;
}
}
break;
case APP_LIFE_CNT_S2://EE<45>
{
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_eep_complete_up_monitor);
nb_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
nb_life_time_state = APP_LIFE_CNT_S0;
break;
}
//<2F><><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
switch(ir_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if(FALSE == IrIfSleepApp())
{
ir_life_time_start_time = life_time_cnt;
ir_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if(TRUE == IrIfSleepApp())
{
if(life_time_cnt >= ir_life_time_start_time)
{
tmp_life_time = life_time_cnt - ir_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - ir_life_time_start_time;
}
total_wake_time += tmp_life_time;
if(total_wake_time > MINITE_TO_SECOND) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
total_wake_time -= MINITE_TO_SECOND;
Sys_data_object.P1.run_information_object.use_sum_times_sec.to_uint32 += 60;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= ONE_MIN_WAKE_ENERGY; //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ӵĻ<D3B5><C4BB>ѹ<EFBFBD><D1B9><EFBFBD>
}
ir_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
{
ir_life_time_state = APP_LIFE_CNT_S0;
}
break;
}
#if defined(VALVE)
//<2F><><EFBFBD>ع<EFBFBD><D8B9>ļ<EFBFBD><C4BC><EFBFBD>
switch(valve_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if(FALSE == ValveIfIdle())
{
valve_life_time_start_time = life_time_cnt;
valve_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if(TRUE == ValveIfIdle())
{
if(life_time_cnt >= valve_life_time_start_time)
{
tmp_life_time = life_time_cnt - valve_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - valve_life_time_start_time;
}
Sys_data_object.P1.run_information_object.valve_use_sum_times_sec += tmp_life_time;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= VAVLE_WORK_ENERGY*tmp_life_time; //<2F><><EFBFBD>ٷ<EFBFBD><D9B7>Ż<C5BB>Ĺ<EFBFBD><C4B9><EFBFBD>
valve_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
{
valve_life_time_state = APP_LIFE_CNT_S0;
}
break;
}
#endif
}
//NB<4E>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void NbUploadParaSet(void)
{
char imei_buf[16];
DateTime temp_rtcc_time;
RtccGetDateTime(&temp_rtcc_time);
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>
if(HOURS_OF_7YEARS > Sys_data_object.ee_data.data.work_hour)
{
//remain_percent_use_life = (float)(HOURS_OF_7YEARS-Sys_data_object.ee_data.data.work_hour)/(float)HOURS_OF_7YEARS;
remain_percent_use_life = (float)(HOURS_OF_7YEARS-Sys_data_object.P1.run_information_object.total_use_sum_times_sec.to_uint32/HOUR_TO_SECOND)/(float)HOURS_OF_7YEARS;
}
else
{
remain_percent_use_life = 0;
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>
remain_percent_use_energy = (float)Sys_data_object.P1.run_information_object.bat_surplus.to_uint32/(float)ENERGY_OF_26500;
setUploadControlPara(UP_BAT_STATE, remain_percent_use_energy*15);//״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ
if(PowerCheckStatusSys() == LOW_POWER)//<2F><><EFBFBD><EFBFBD>Ƿѹ
{
remain_para_energy_life = 0.1;
}
else
{
if(remain_percent_use_life == 0)//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37>
{
remain_para_energy_life = 1;
}
else
{
if(Sys_data_object.P1.run_information_object.bat_surplus.to_uint32>(remain_percent_use_life*ENERGY_OF_IDLE))//<2F><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
remain_para_energy_life = (float)(remain_percent_use_energy/remain_percent_use_life)*NB_BAT_PARA;
}
else//<2F>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
remain_para_energy_life = 0.1;
}
}
}
//<2F><>ֵ<EFBFBD>л<EFBFBD><D0BB>ж<EFBFBD>
if((Sys_data_object.P1.run_information_object.ee_remain_para_energy_life>0)&&(Sys_data_object.P1.run_information_object.ee_remain_para_energy_life<=1.5))
{
if(remain_para_energy_life < Sys_data_object.P1.run_information_object.ee_remain_para_energy_life)
{
Sys_data_object.P1.run_information_object.ee_remain_para_energy_life = remain_para_energy_life;
}
}
else
{
Sys_data_object.P1.run_information_object.ee_remain_para_energy_life = remain_para_energy_life;
}
//<2F><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5>
if(Sys_data_object.P1.run_information_object.ee_remain_para_energy_life>1.5)
{
setUploadControlPara(UP_RETRY_NUM, Sys_data_object.P1.report_retry_times);//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>
setUploadControlPara(UP_DELAY_TIME1, NB_WAIT_TIME_5S);//<2F><>ָ<EFBFBD><D6B8>ʱ<EFBFBD><CAB1>3s
setUploadControlPara(UP_DAY_COUNT,(Sys_data_object.P1.func_cfg_bytes[13]>>4)&0x0F);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
}
else if(Sys_data_object.P1.run_information_object.ee_remain_para_energy_life>1)
{
setUploadControlPara(UP_RETRY_NUM,0);//<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>
setUploadControlPara(UP_DELAY_TIME1, NB_WAIT_TIME_5S);
setUploadControlPara(UP_DAY_COUNT,Sys_data_object.P1.func_cfg_bytes[13]&0x0F);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
}
else if(Sys_data_object.P1.run_information_object.ee_remain_para_energy_life>0.8)
{
setUploadControlPara(UP_RETRY_NUM,0);//<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>
setUploadControlPara(UP_DELAY_TIME1, NB_WAIT_TIME_5S);
setUploadControlPara(UP_DAY_COUNT,(Sys_data_object.P1.func_cfg_bytes[14]>>4)&0x0F);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
}
else if(Sys_data_object.P1.run_information_object.ee_remain_para_energy_life>0.5)
{
setUploadControlPara(UP_RETRY_NUM,0);//<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>
setUploadControlPara(UP_DELAY_TIME1,NB_WAIT_TIME_5S);
setUploadControlPara(UP_DAY_COUNT,Sys_data_object.P1.func_cfg_bytes[14]&0x0F);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
}
else
{
setUploadControlPara(UP_RETRY_NUM,0);//<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>
setUploadControlPara(UP_DELAY_TIME1,NB_WAIT_TIME_5S);
setUploadControlPara(UP_DAY_COUNT,(Sys_data_object.P1.func_cfg_bytes[15]>>4)&0x0F);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7
setUploadControlPara(UP_WITH_UDP,TRUE);//<2F><><EFBFBD><EFBFBD>UDP<44>ϱ<EFBFBD>
}
Sys_data_object.P1.report_retry_times = getUploadControlPara(UP_RETRY_NUM);//<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>Ƿ񾫼<C7B7>
NbiotGetIMEI(imei_buf);
if(strlen(imei_buf)<15)//<2F><><EFBFBD>ж<EFBFBD>IMEI<45><49><EFBFBD><EFBFBD>
{
setUploadControlPara(UP_AT_SIMPLE, AT_SIMPLE_NULL);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ATָ<54><D6B8>
setUploadControlPara(UP_DELAY_TIME1,NB_WAIT_TIME_5S);
setUploadControlPara(UP_WITH_UDP,TRUE);//<2F><><EFBFBD><EFBFBD>UDP<44>ϱ<EFBFBD>
}
else
{
if((GetEventUploadType()==UPLOAD_TYPE_HAND_KEY)||
(GetEventUploadType()==UPLOAD_TYPE_FRAME_ORDER)||
(GetEventUploadType()==UPLOAD_TYPE_SET_IP)||
(getUploadControlPara(UP_AT_ALL_MSG)==TRUE))
{
setUploadControlPara(UP_AT_ALL_MSG,FALSE);//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȫָ<C8AB><D6B8><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ
setUploadControlPara(UP_AT_SIMPLE, AT_SIMPLE_NULL);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ATָ<54><D6B8>
setUploadControlPara(UP_DELAY_TIME1,NB_WAIT_TIME_5S);
setUploadControlPara(UP_WITH_UDP,TRUE);//<2F><><EFBFBD><EFBFBD>UDP<44>ϱ<EFBFBD>
}
else
{
if((GetEventUploadType()==UPLOAD_TYPE_FIX_TIME)||(GetEventUploadType()==UPLOAD_TYPE_RETRY_AGAIN))//<2F><>ʱ\<5C>ش<EFBFBD><D8B4>ϱ<EFBFBD>
{
setUploadControlPara(UP_AT_SIMPLE, AT_SIMPLE_M1);//AT<41><54><EFBFBD><EFBFBD>1
setUploadControlPara(UP_DELAY_TIME1, NB_WAIT_TIME_5S);
if((BCD2HEX(temp_rtcc_time.s.day)%3)==0)
{
setUploadControlPara(UP_WITH_UDP, TRUE);//<2F><><EFBFBD><EFBFBD>UDP<44>ϱ<EFBFBD>
}
else
{
setUploadControlPara(UP_WITH_UDP,FALSE);//<2F>ر<EFBFBD>UDP<44>ϱ<EFBFBD>
}
}
else if(GetEventUploadType()==UPLOAD_TYPE_VALVE_CLOSE)//<2F>ط<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ϱ<EFBFBD>
{
setUploadControlPara(UP_AT_SIMPLE, AT_SIMPLE_M2);//AT<41><54><EFBFBD><EFBFBD>2
setUploadControlPara(UP_DELAY_TIME1, NB_WAIT_TIME_5S);
setUploadControlPara(UP_WITH_UDP,FALSE);//<2F>ر<EFBFBD>UDP<44>ϱ<EFBFBD>
}
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>¼<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
u8 AppLifeTimeCountMachineIfIdle(void)
{
if((APP_LIFE_CNT_S0 == nb_life_time_state)&&(APP_LIFE_CNT_S0 == ir_life_time_state)&&(APP_LIFE_CNT_S0 == valve_life_time_state))
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
#elif UPLOAD_MODE_2
static u8 up_monitor_para_buf[UP_PARA_NUM];//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static ENUM_APP_LIFE_CNT ble_life_time_state=APP_LIFE_CNT_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static ENUM_APP_LIFE_CNT ir_life_time_state=APP_LIFE_CNT_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static u32 ble_life_time_start_time=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
static u32 ble_total_wake_time = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
static u32 ir_life_time_start_time=0;//<2F><><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
static u32 ir_total_wake_time = 0;//<2F><><EFBFBD><EFBFBD><E2BBBD>ʱ<EFBFBD><CAB1>
static u16 life_time_cnt = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 life_time_minute_cnt = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u16 tmp_life_time = 0;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
static ENUM_APP_LIFE_CNT valve_life_time_state=APP_LIFE_CNT_S0;//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
#if defined(VALVE)
static u32 valve_life_time_start_time=0;//<2F><><EFBFBD>ؿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
void setUploadControlPara(ENUM_UPLOAD_CONTROL paraId, u8 paraData)
{
if(paraId<UP_PARA_NUM)
{
up_monitor_para_buf[paraId] = paraData;
}
}
//<2F><>ȡ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
u8 getUploadControlPara(ENUM_UPLOAD_CONTROL paraId)
{
if(paraId<UP_PARA_NUM)
{
return up_monitor_para_buf[paraId];
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
void AppLifeTimeCountMachine(void)
{
if(RtccCheckMsg()&0x10)//<2F><><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RtccClearMsg(4);
life_time_cnt++;
life_time_cnt %= HOUR_TO_SECOND;
}
if(RtccCheckMsg()&0x20)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
{
RtccClearMsg(5);
life_time_minute_cnt++;
if(life_time_minute_cnt>=60)
{
life_time_minute_cnt=0;
Sys_data_object.P1.run_information_object.total_use_sum_times_sec.to_uint32 += HOUR_TO_SECOND;//<2F>ۼ<EFBFBD>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= ONE_HOUR_STATIC_ENERGY;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
switch(ble_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if((BleConnectIfIdle() == TASK_BUSY)||(BleIfSleep()==TASK_BUSY))
{
ble_life_time_start_time = life_time_cnt;
ble_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if((BleConnectIfIdle() == TASK_IDLE)&&(BleIfSleep()==TASK_IDLE))
{
if(life_time_cnt >= ble_life_time_start_time)
{
tmp_life_time = life_time_cnt - ble_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - ble_life_time_start_time;
}
ble_total_wake_time += tmp_life_time;
if(ble_total_wake_time > MINITE_TO_SECOND) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
ble_total_wake_time -= MINITE_TO_SECOND;
//<2F><>¼NB<4E><42><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>NB<4E><42>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.nb_use_sum_times_sec.to_uint32 += 60;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= BLE_ONE_MIN_ENERGY; //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB9A6>
}
Sys_data_object.P1.run_information_object.nb_upload_happen_num++;
ble_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
{
ble_life_time_state = APP_LIFE_CNT_S0;
}
break;
}
//<2F><><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
switch(ir_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if(FALSE == IrIfSleepApp())
{
ir_life_time_start_time = life_time_cnt;
ir_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if(TRUE == IrIfSleepApp())
{
if(life_time_cnt >= ir_life_time_start_time)
{
tmp_life_time = life_time_cnt - ir_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - ir_life_time_start_time;
}
ir_total_wake_time += tmp_life_time;
if(ir_total_wake_time > MINITE_TO_SECOND) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
ir_total_wake_time -= MINITE_TO_SECOND;
Sys_data_object.P1.run_information_object.use_sum_times_sec.to_uint32 += 60;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= ONE_MIN_WAKE_ENERGY; //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ӵĻ<D3B5><C4BB>ѹ<EFBFBD><D1B9><EFBFBD>
}
ir_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
{
ir_life_time_state = APP_LIFE_CNT_S0;
}
break;
}
#if defined(VALVE)
//<2F><><EFBFBD>ع<EFBFBD><D8B9>ļ<EFBFBD><C4BC><EFBFBD>
switch(valve_life_time_state)
{
case(APP_LIFE_CNT_S0):
{
if(FALSE == ValveIfIdle())
{
valve_life_time_start_time = life_time_cnt;
valve_life_time_state = APP_LIFE_CNT_S1;
}
}
break;
case(APP_LIFE_CNT_S1):
{
if(TRUE == ValveIfIdle())
{
if(life_time_cnt >= valve_life_time_start_time)
{
tmp_life_time = life_time_cnt - valve_life_time_start_time;
}
else
{
tmp_life_time = HOUR_TO_SECOND + life_time_cnt - valve_life_time_start_time;
}
Sys_data_object.P1.run_information_object.valve_use_sum_times_sec += tmp_life_time;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 -= VAVLE_WORK_ENERGY*tmp_life_time; //<2F><><EFBFBD>ٷ<EFBFBD><D9B7>Ż<C5BB>Ĺ<EFBFBD><C4B9><EFBFBD>
valve_life_time_state = APP_LIFE_CNT_S0;
}
}
break;
default:
{
valve_life_time_state = APP_LIFE_CNT_S0;
}
break;
}
#endif
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>¼<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
u8 AppLifeTimeCountMachineIfIdle(void)
{
if((APP_LIFE_CNT_S0 == ble_life_time_state)&&(APP_LIFE_CNT_S0 == ir_life_time_state)&&(APP_LIFE_CNT_S0 == valve_life_time_state))
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
#endif