P3UWaterGuangZhou/app/UWater_Frame/UWater_frame_func_ReplyShen...

1312 lines
40 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_SS
#include "sys_processor.h"
#include "UWater_eeprom_driver.h"
#include "UWater_valve_driver.h"
#include "UWater_Valve_app.h"
#include "UWater_rtcc_app.h"
#include "UWater_power_app.h"
#include "UWater_gp22_app.h"
#include "UWater_pt_app.h"
#include "UWater_DataTools_App.h"
#include "UWater_QZ_Store_App.h"
#include "nb_upload_monitor.h"
#include "UWater_frame_func_ReplyNB.h"
#include "UWater_frame_func_ReplyShenShui.h"
static u8 s_eep_complete_ShenShui=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>*****************************************/
static u16 upload_serial_num_ShenShui=0;
static STRUCT_FRAME_IES upload_struct_ShenShui; //<2F><>Լ<EFBFBD><D4BC>Ϣ
static u8 upload_frame_stat_ShenShui=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡״̬
static u8 upload_task_complete_ShenShui = PTL_PACK_FAIL;
static u16 upload_temp_len_ShenShui=0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
static UNION_SIGNAL signal_val;
static u8 upload_frame_retry_times=0;
static u8 temp_upload_step=0;
//static u8 temp_Supplemental_send_NO;
static u8 temp_store_msg=0;
//<2F><><EFBFBD>ɹ<EFBFBD>Լ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static STRU_UPLOAD_FRAME upload_frame;//<2F><>֡<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static STRU_UPLOAD_FRAME store_frame;//<2F><>֡<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>,<2C><><EFBFBD>ϱ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֹ<EFBFBD>ϱ<EFBFBD><CFB1>ڼ<EFBFBD><DABC><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
static STRU_SHORT_UPLOAD_FRAME short_upload_frame;//<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ
static u8 supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S0;
static u8 supplement_cnt = 0;
static u8 supplement_buf[300];
//<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;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>
static TYP_STATE_SS step_clear_flag=SS_STATE_S0;
static u32 temp_supplement_bit;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>֡------------------------<2D>жϵ<D0B6>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>PTL_PACK_FAIL
//<2F><>ˮ<EFBFBD>ͽ<EFBFBD>ˮ<EFBFBD>ϴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ
static void frame_func_reply_NB_AckUpload(void)
{
g_frame_temp_len_ShenShui =0;
u8 sernum0 = upload_serial_num_ShenShui&0xFF;
u8 sernum1 = (upload_serial_num_ShenShui>>8)&0xFF;
if(*(new_message_data_rev_ShenShui + 6) == 1)//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD>
{
if(frame_struct_ShenShui.serial_num0 == sernum0)//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7>ظ<EFBFBD>ʽ<EFBFBD>쳣,Ӧ<>жϹ<D0B6>
{
if(frame_struct_ShenShui.serial_num1 == sernum1)
{
NB_SS_Control_SetPara(NB_SS_FormatError, 1);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʽ<EFBFBD><EFBFBD><ECB3A3>־
FrameSetMsgApp(MsgNbUplaod_AckOk);//<2F>ſ<EFBFBD><C5BF><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֹ<EFBFBD><EFBFBD><ECB3A3><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
}
}
}
else
{
if(frame_struct_ShenShui.serial_num0 == sernum0)
{
if(frame_struct_ShenShui.serial_num1 == sernum1)
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
}
}
NB_SS_Control_SetPara(NB_SS_FormatError, 0);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʽ<EFBFBD><EFBFBD><ECB3A3>־
}
task_complete_ShenShui = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>֡,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>,<2C><><EFBFBD>Ʋ<EFBFBD>Ӧ<EFBFBD><D3A6>
}
//<2F><>֡<EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>
static void frame_func_reply_NB_AckUploadShort(void)
{
frame_func_reply_NB_AckUpload();
}
//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>ԼӦ<D4BC><D3A6>
static void frame_func_reply_NB_AckNewSupplement(void)
{
frame_func_reply_NB_AckUpload();
}
//<2F><>¼֡------------------------<2D>жϵ<D0B6>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>PTL_PACK_FAIL
static void frame_func_reply_NB_AckLogin(void)
{
FrameSetMsgApp(MsgNbUplaod_AckLoginOk);
}
static void ies_ack_upload_valve_frame(void)
{
g_frame_temp_len_ShenShui =0;
#if defined(VALVE)
u8 sernum0 = upload_serial_num_ShenShui&0xFF;
u8 sernum1 = (upload_serial_num_ShenShui>>8)&0xFF;
u8 rcv_state = 0;
rcv_state = *(new_message_data_rev_ShenShui + 6);
if(*(new_message_data_rev_ShenShui + 6) == 1)//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD>
{
NB_SS_Control_SetPara(NB_SS_FormatError, 1);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʽ<EFBFBD><EFBFBD><ECB3A3>־
}
else
{
if(frame_struct_ShenShui.serial_num0 == sernum0)
{
if(frame_struct_ShenShui.serial_num1 == sernum1)
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
}
}
NB_SS_Control_SetPara(NB_SS_FormatError, 0);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʽ<EFBFBD><EFBFBD><ECB3A3>־
}
if(0x00 == (rcv_state & 0x06)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>
{
ValveDealAppStart(VALVE_STATE_OPEN);
}
else if(0x02 == (rcv_state & 0x06)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>չ<EFBFBD>
{
ValveDealAppStart(VALVE_STATE_CLOSE);
}
else if(0x04 == (rcv_state & 0x06)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C8A8>
{
ValveDealAppStart(VALVE_STATE_CLOSE_LOCK);
}
else if(0x06 == (rcv_state & 0x06)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D3A6><EFBFBD><EFBFBD>
{
ValveDealAppStart(VALVE_STATE_CLOSE_EMERGENCY);
}
#endif
task_complete_ShenShui = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>֡,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>,<2C><><EFBFBD>Ʋ<EFBFBD>Ӧ<EFBFBD><D3A6>
}
//<2F><><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, 155, &s_eep_complete_ShenShui);
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>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
static void frame_func_s3_NB_ClearFailTimes(void)
{
if(TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_ShenShui = 0;
NB_SS_Control_SetPara(NB_SS_FormatError, 0);
NB_SS_Control_SetPara(NB_UploadFailTimes, 0);
task_complete_ShenShui = PTL_PACK_SUCCESS;
}
}
/************************************************************************************************************/
//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Լ
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)
{
new_message_data_rev_ShenShui = frame_buffer + frame_struct_ShenShui.head_site + 16;
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
u8 up_deal_code_ShenShui(void)
{
task_complete_ShenShui = PTL_PACK_BUSY;
switch(frame_struct_ShenShui.ctrl)
{
case SS_ACK_UPLOAD_CTRL:
{
frame_func_reply_NB_AckUpload();
}
break;
case SHORT_ACK_UPLOAD_CTRL:
{
frame_func_reply_NB_AckUploadShort();
}
break;
case SS_ACK_SIGN_IN_CTRL:
{
frame_func_reply_NB_AckLogin();
}
break;
case ACK_UPLOAD_WITH_VAVLE_CTRL://Я<><D0AF><EFBFBD>ط<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>֡
{
ies_ack_upload_valve_frame();
}
break;
case SUPP_ACK_UPLOAD_CTRL://<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>ԼӦ<D4BC><D3A6>
{
frame_func_reply_NB_AckNewSupplement();
}
break;
case SS_CLEAR_FAIL_TIMES_CTRL:
{
frame_func_s3_NB_ClearFailTimes();
frame_struct_ShenShui.ack_ctrl = SS_ACK_CLEAR_FAIL_TIMES_CTRL;
}
break;
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;
}
void Frame_ResetDealState_ShenShui(void)
{
up_deal_stat_ShenShui = UP_DEAL_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>λ
}
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
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);
}
/****************************************************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4><EFBFBD>*********************************************/
static void setStoreMsg(SS_StoreMsgType msg, boolean_t bFlag)
{
if(TRUE == bFlag)
{
temp_store_msg |= (1<<msg);
}
else
{
temp_store_msg &= (~(1<<msg));
}
}
static boolean_t getStoreMsg(SS_StoreMsgType msg)
{
if(temp_store_msg & (1<<msg))
{
return TRUE;
}
else
{
return FALSE;
}
}
//<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><>ȡ:rsrp(2B),<2C><><EFBFBD>ص<EFBFBD>ѹ(2B),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(2B),<2C><><EFBFBD><EFBFBD><EFBFBD>źŸ<C5BA><C5B8>ǵȼ<C7B5>ecl(2B),CSQ(1B),<2C><>ѹ<EFBFBD><D1B9>ֵ(1B)
temp_frame->data.UploadInfo = UploadGetInfo_Base();
//<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>
}
//<2F><>֡<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void Upload_RenewShortFrameData(void)
{
DateTime tempRtcc_time;
//<2F><><EFBFBD><EFBFBD>
short_upload_frame.data.null_buf.datas = 0;
short_upload_frame.data.CurrentFlow_short.datas = upload_frame.data.CurrentFlow.datas;//<2F><>ǰ<EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>
//<2F>ź<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame.data.UploadInfo = UploadGetInfo_Base();
short_upload_frame.data.RSRP_val = (u8)(upload_frame.data.UploadInfo.metinfo.RSRP_val/10);
short_upload_frame.data.bat_voltage = PowerCheckValueSys();
short_upload_frame.data.mode_snr = upload_frame.data.UploadInfo.metinfo.snr_val;
short_upload_frame.data.mode_ecl = upload_frame.data.UploadInfo.metinfo.ecl_val;
//<2F>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
RtccGetDateTime(&tempRtcc_time);
short_upload_frame.data.UploadTime[0] = tempRtcc_time.s.minute;
short_upload_frame.data.UploadTime[1] = tempRtcc_time.s.hour;
short_upload_frame.data.UploadTime[2] = tempRtcc_time.s.day;
short_upload_frame.data.UploadTime[3] = tempRtcc_time.s.month;
short_upload_frame.data.UploadTime[4] = tempRtcc_time.s.year;
//״̬<D7B4><CCAC>
short_upload_frame.data.StateBytes[0] = upload_frame.data.StateBytes[0];
short_upload_frame.data.StateBytes[1] = upload_frame.data.StateBytes[1];
short_upload_frame.data.StateBytes[2] = upload_frame.data.StateBytes[2];
short_upload_frame.data.StateBytes[3] = 0x02;
short_upload_frame.data.StateBytes[3] |= getUploadControlPara(UP_BAT_STATE);//ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>
short_upload_frame.data.soft_ver.datas_map.data1 =(FrameCheckParaApp(FramePara_ProgVersion)>>16)&0xFF;
short_upload_frame.data.soft_ver.datas_map.data0 =(FrameCheckParaApp(FramePara_ProgVersion)>>24)&0xFF;
short_upload_frame.data.temp_value.datas = (u16)TempCheckValueApp();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void StartSupplementFrame(void)
{
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S1;
}
u8 SupplementFrameMachineIfIdle(void)
{
if(SUPPLEMENT_DATA_FRAME_S0 == supplement_data_frame_state)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void SupplementFrameMachine(void)
{
switch(supplement_data_frame_state)
{
case SUPPLEMENT_DATA_FRAME_S0:
break;
case(SUPPLEMENT_DATA_FRAME_S1):
{
supplement_cnt = 0;
temp_supplement_bit = Sys_data_object.P1.Supplemental_send_flag.datas;
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S2;
}
break;
case(SUPPLEMENT_DATA_FRAME_S2):
{
if(EepIfIdle())
{
//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><E3B2B9>ָ<EFBFBD><D6B8>,<2C><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.histroy_r = 0xFF;
for (int i = Sys_data_object.P1.histroy_w; i >0; i--)
{
if (Sys_data_object.P1.Supplemental_send_flag.datas &(0x00000001<<i))
{
Sys_data_object.P1.histroy_r = i;
break;
}
}
if(Sys_data_object.P1.histroy_r == 0xFF)
{
for (int i = 31; i >(Sys_data_object.P1.histroy_w-1); i--)
{
if (Sys_data_object.P1.Supplemental_send_flag.datas &(0x00000001<<i))
{
Sys_data_object.P1.histroy_r = i;
break;
}
}
}
if(supplement_cnt < SUPPLEMENT_DATA_MAX_NUM)
{
EepRead(FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), &upload_frame.buf[0], PACK_NUM_GPRS, &s_eep_complete_ShenShui);
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S3;
}
else
{
supplement_buf[0] = supplement_cnt;
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S0;
}
}
}
break;
case(SUPPLEMENT_DATA_FRAME_S3):
{
if(EepIfIdle())
{
supplement_buf[1+supplement_cnt*12+0] = upload_frame.data.UploadTime[3];
supplement_buf[1+supplement_cnt*12+1] = upload_frame.data.UploadTime[4];
supplement_buf[1+supplement_cnt*12+2] = upload_frame.data.UploadTime[5];
supplement_buf[1+supplement_cnt*12+3] = upload_frame.data.StateBytes[1];
supplement_buf[1+supplement_cnt*12+4] = upload_frame.data.CurrentFlow.datas_map.data0;
supplement_buf[1+supplement_cnt*12+5] = upload_frame.data.CurrentFlow.datas_map.data1;
supplement_buf[1+supplement_cnt*12+6] = upload_frame.data.CurrentFlow.datas_map.data2;
supplement_buf[1+supplement_cnt*12+7] = upload_frame.data.CurrentFlow.datas_map.data3;
supplement_buf[1+supplement_cnt*12+8] = 0; //<2F><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>4<EFBFBD>ֽ<EFBFBD>
supplement_buf[1+supplement_cnt*12+9] = 0;
supplement_buf[1+supplement_cnt*12+10] = 0;
supplement_buf[1+supplement_cnt*12+11] = 0;
supplement_cnt++;
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S2;
}
}
break;
default:
{
supplement_data_frame_state = SUPPLEMENT_DATA_FRAME_S0;
}
break;
}
}
void GetUploadDataResetState_SS(void)
{
upload_frame_stat_ShenShui =UP_DEAL_S0;
upload_task_complete_ShenShui = PTL_PACK_BUSY;
}
u8 GetUploadDataCheckIdle_SS(void)
{
if(UP_DEAL_S0 == upload_frame_stat_ShenShui)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
u8 GetUploadDataCheckTask_SS(void)
{
return upload_task_complete_ShenShui;
}
void GetUploadDataMachine_SS(u8 data_step, u8* p_send_buf, u16* p_send_len)
{
switch(upload_frame_stat_ShenShui)
{
case UP_DEAL_S0:
{
if(data_step == UPLOAD_FRAME_REQUEST_NEW)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
{
temp_upload_step = 0;
upload_frame_retry_times = 0;//<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݴ洢λ<E6B4A2><CEBB>
if(Sys_data_object.P1.histroy_w >= PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_w = 0;
}
if(0 == Sys_data_object.P1.histroy_w)
{
Sys_data_object.P1.histroy_r = PERIOD_DATA_NUM - 1;
}
else
{
Sys_data_object.P1.histroy_r = Sys_data_object.P1.histroy_w-1;
}
setStoreMsg(SS_StoreMsg4,TRUE);//<2F><><EFBFBD>µ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_ShenShui = UP_DEAL_S1;
}
else if(data_step == UPLOAD_FRAME_UPLOAD_OK)//<2F><><EFBFBD>ͳɹ<CDB3>
{
if(temp_upload_step == UP_DEAL_S1)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3>
{
SystemClearUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD>0
setStoreMsg(SS_StoreMsg2, TRUE);//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(<28><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>)
upload_frame_retry_times = 0;
if(Sys_data_object.P1.func_cfg_bytes[7]==0x55)//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
{
if(((FrameCheckParaApp(FramePara_FuncCfg8_11)>>8)&0xFF) == 0xAA)//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ
{
upload_frame_stat_ShenShui = UP_DEAL_S30;//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else
{
upload_frame_stat_ShenShui = UP_DEAL_S10;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
else//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
{
NB_SS_Control_SetPara(NB_UploadFailTimes, 0);//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܱ<EFBFBD>־
upload_task_complete_ShenShui = PTL_PACK_FAIL;// ʧ<><CAA7>,<2C>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
else if(temp_upload_step == UP_DEAL_S10)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3>
{
setStoreMsg(SS_StoreMsg2, TRUE);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
upload_frame_retry_times = 0;
upload_frame_stat_ShenShui = UP_DEAL_S10;//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else if(temp_upload_step == UP_DEAL_S30)//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ
{
upload_frame_retry_times = 0;
upload_frame_stat_ShenShui = UP_DEAL_S33;
}
}
else if(data_step == UPLOAD_FRAME_UPLOAD_RETRY)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>
{
upload_frame_stat_ShenShui = UP_DEAL_S21;
/*ɽ<><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>޸<EFBFBD>( <20><>ΪACK<43>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;*/
}
else if(data_step == UPLOAD_FRAME_ONLINE_FAIL) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݴ洢λ<E6B4A2><CEBB>(<28><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>¼)
if(Sys_data_object.P1.histroy_w >= PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_w = 0;
}
if(0 == Sys_data_object.P1.histroy_w)
{
Sys_data_object.P1.histroy_r = PERIOD_DATA_NUM - 1;
}
else
{
Sys_data_object.P1.histroy_r = Sys_data_object.P1.histroy_w-1;
}
if( (UPLOAD_TYPE_TOUCH_KEY == GetEventUploadType()) ||
(UPLOAD_TYPE_HAND_KEY == GetEventUploadType()))//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
{
setStoreMsg(SS_StoreMsg1, TRUE);//<2F><><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>λ<EFBFBD><CEBB>
}
else if(UPLOAD_TYPE_FIX_TIME == GetEventUploadType())//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
setStoreMsg(SS_StoreMsg1, TRUE);//<2F><><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>λ<EFBFBD><CEBB>
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
else if(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType())//<2F>ش<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
else
{
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S1://<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(step_save_supplt == SS_STATE_S0)//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(EepIfIdle())
{
EepRead(FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), &upload_frame.buf[0], PACK_NUM_GPRS, &s_eep_complete_ShenShui);
temp_upload_step = UP_DEAL_S1;//<2F><>¼<EFBFBD><C2BC>ǰ״̬
upload_frame_stat_ShenShui = UP_DEAL_S2;
}
}
}
break;
case UP_DEAL_S2:
{
if(EepIfIdle())
{
Date g_date_miji;
u8* miji_buf;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ܼ<EFBFBD><DCBC>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
if(RtccCheckMsgApp(RtccMsg_MiJiCaiJi))//<2F><>ѯ<EFBFBD>ܼ<EFBFBD><DCBC>ɼ<EFBFBD><C9BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳɼ<D1B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
{
//<2F>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
upload_frame.data.MiJiCaiJiStartTime[0]= Sys_data_object.P1.report_start_time[6];
upload_frame.data.MiJiCaiJiStartTime[1]= Sys_data_object.P1.report_start_time[7];
upload_frame.data.MiJiCaiJiStartTime[2]= Sys_data_object.P1.report_start_time[8];
upload_frame.data.MiJiCaiJiStartTime[3]= g_date_miji.s.day;
upload_frame.data.MiJiCaiJiStartTime[4]= g_date_miji.s.month;
upload_frame.data.MiJiCaiJiStartTime[5]= g_date_miji.s.year;
upload_frame.data.MiJiCaiJiStartTime[6]= 0x20;
RtccGetDate(&g_date_miji); //<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
Gp30CheckMiJiDataApp(&miji_buf);
for(int tmp_j = 0; tmp_j <192;tmp_j++)
{
upload_frame.data.MiJiCaiJiFlow[tmp_j] = *(miji_buf + tmp_j);
}
upload_temp_len_ShenShui = PACK_NUM_GPRS_TOTAL;
}
else
{
upload_temp_len_ShenShui = PACK_NUM_GPRS;//<2F><><EFBFBD>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
}
upload_frame_stat_ShenShui = UP_DEAL_S20;
}
}
break;
case UP_DEAL_S10://<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(step_clear_flag == SS_STATE_S0)
{
if(EepIfIdle())
{
s_eep_complete_ShenShui = 0;
//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><E3B2B9>ָ<EFBFBD><D6B8>,<2C><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.histroy_r = 0xFF;
for (int i = Sys_data_object.P1.histroy_w; i >=0; i--)
{
if(Sys_data_object.P1.Supplemental_send_flag.datas &(0x00000001<<i))
{
Sys_data_object.P1.histroy_r = i;
break;
}
}
if(Sys_data_object.P1.histroy_r == 0xFF)
{
for(int i = 31; i >(Sys_data_object.P1.histroy_w-1); i--)
{
if (Sys_data_object.P1.Supplemental_send_flag.datas &(0x00000001<<i))
{
Sys_data_object.P1.histroy_r = i;
break;
}
}
}
if(Sys_data_object.P1.histroy_r == 0xFF)//<2F><><EFBFBD><EFBFBD><E8B2B9>
{
upload_task_complete_ShenShui = PTL_PACK_FAIL;// ʧ<><CAA7>
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
else //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
{
EepRead(FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), &upload_frame.buf[0], PACK_NUM_GPRS, &s_eep_complete_ShenShui);
upload_temp_len_ShenShui = PACK_NUM_GPRS;
temp_upload_step = UP_DEAL_S10;//<2F><>¼<EFBFBD><C2BC>ǰ״̬
upload_frame_stat_ShenShui = UP_DEAL_S20;
}
}
}
}
break;
case UP_DEAL_S20://<2F><><EFBFBD>ϴ<EFBFBD>֡
{
if(EepIfIdle())
{
if((FrameCheckParaApp(FramePara_FuncCfg8_11)&0xFF) == 0xAA)//<2F><>֡<EFBFBD>ϱ<EFBFBD>
{
upload_struct_ShenShui.ack_ctrl = SHORT_UPLOAD_CTRL;
upload_struct_ShenShui.DI0 = SHORT_UPLOAD_CTRL_ID0;
upload_struct_ShenShui.DI1 = SHORT_UPLOAD_CTRL_ID1;
upload_struct_ShenShui.sta = 0x03;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
upload_serial_num_ShenShui++;
upload_struct_ShenShui.serial_num0 = upload_serial_num_ShenShui&0xFF;
upload_struct_ShenShui.serial_num1 = (upload_serial_num_ShenShui>>8)&0xFF;
upload_temp_len_ShenShui = STRU_DATA_LEN_IES_SHORT;
Upload_RenewShortFrameData();//<2F><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
Frame_ack_IesBase(upload_struct_ShenShui, short_upload_frame.buf, upload_temp_len_ShenShui, p_send_buf, p_send_len);
}
else
{
upload_struct_ShenShui.ack_ctrl = SS_UPLOAD_CTRL;
upload_struct_ShenShui.DI0 = SS_UPLOAD_CTRL_ID0;
upload_struct_ShenShui.DI1 = SS_UPLOAD_CTRL_ID1;
upload_struct_ShenShui.sta = 0x03;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
upload_serial_num_ShenShui++;
upload_struct_ShenShui.serial_num0 = upload_serial_num_ShenShui&0xFF;
upload_struct_ShenShui.serial_num1 = (upload_serial_num_ShenShui>>8)&0xFF;
Frame_ack_IesBase(upload_struct_ShenShui, upload_frame.buf, upload_temp_len_ShenShui, p_send_buf, p_send_len);
}
upload_task_complete_ShenShui = PTL_PACK_SUCCESS;// <20>ɹ<EFBFBD>
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S21://<2F><><EFBFBD><EFBFBD>
{
if(upload_frame_retry_times < 1) //<2F><>Ϊ<EFBFBD>ط<EFBFBD>1<EFBFBD><31>
{
upload_frame_retry_times++;
if(temp_upload_step == UP_DEAL_S30)//<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ
{
upload_frame_stat_ShenShui = UP_DEAL_S32;
}
else
{
upload_frame_stat_ShenShui = UP_DEAL_S20;
}
}
else//<2F><><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʧ<EFBFBD><CAA7>3<EFBFBD>εĴ<CEB5><C4B4><EFBFBD>
{
if(temp_upload_step == UP_DEAL_S1)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C>ж<EFBFBD><D0B6>Ƿ񲹱<C7B7>
{
if( (UPLOAD_TYPE_TOUCH_KEY == GetEventUploadType()) ||
(UPLOAD_TYPE_HAND_KEY == GetEventUploadType()))//<2F>Ƿ<EFBFBD><C7B7>Źر<C5B9><D8B1>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>
{
setStoreMsg(SS_StoreMsg1, TRUE);//temp_store_msg |= 0x02;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,<2C>Ҽ<EFBFBD>¼<EFBFBD><C2BC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
}
else if(UPLOAD_TYPE_FIX_TIME == GetEventUploadType())//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
setStoreMsg(SS_StoreMsg1, TRUE);//temp_store_msg |= 0x02;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,<2C>Ҽ<EFBFBD>¼<EFBFBD><C2BC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
else if(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType())//<2F>ش<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
}
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S30://<2F>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ,<2C><>֡<EFBFBD><D6A1>ʼ<EFBFBD><CABC>
{
if(EepIfIdle())
{
temp_upload_step = UP_DEAL_S30;
StartSupplementFrame();
upload_frame_stat_ShenShui = UP_DEAL_S31;
}
}
break;
case UP_DEAL_S31://<2F>ȴ<EFBFBD><C8B4><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
SupplementFrameMachine();
if(TASK_IDLE == SupplementFrameMachineIfIdle())
{
if(supplement_cnt)//<2F><>Ϊ0<CEAA><30>˵<EFBFBD><CBB5><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD>
{
upload_frame_stat_ShenShui = UP_DEAL_S32;
}
else
{
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
}
break;
case UP_DEAL_S32://<2F><>֡
{
if(EepIfIdle())
{
upload_struct_ShenShui.ack_ctrl = SUPP_UPLOAD_CTRL;
upload_struct_ShenShui.DI0 = SUPP_UPLOAD_CTRL_ID0;
upload_struct_ShenShui.DI1 = SUPP_UPLOAD_CTRL_ID1;
upload_struct_ShenShui.sta = 0x03;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
upload_serial_num_ShenShui++;
upload_struct_ShenShui.serial_num0 = upload_serial_num_ShenShui&0xFF;
upload_struct_ShenShui.serial_num1 = (upload_serial_num_ShenShui>>8)&0xFF;
upload_temp_len_ShenShui = supplement_cnt*12 + 1;
Frame_ack_IesBase(upload_struct_ShenShui, supplement_buf, upload_temp_len_ShenShui, p_send_buf, p_send_len);
upload_task_complete_ShenShui = PTL_PACK_SUCCESS;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S33://<2F><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>־
{
if(EepIfIdle())
{
Sys_data_object.P1.Supplemental_send_flag.datas = temp_supplement_bit;
EepWrite(&Sys_data_object.P1.Supplemental_send_flag.datas_map.data0, FRAME_NBIot_BUBAO_FLAG, 6, &s_eep_complete_ShenShui);
upload_frame_stat_ShenShui = UP_DEAL_S30;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
break;
default:
{
upload_task_complete_ShenShui = PTL_PACK_FAIL;
upload_frame_stat_ShenShui = UP_DEAL_S0;
}
break;
}
}
/*************************************************<2A><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>****************************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static DateTime_noweek getBackDateTimeNoWeek(u8 backDays)
{
DateTime cdt;
DateTime_noweek cdt_noweek;
struct tm tmdt;
struct tm *ldt;
time_t ctt;
RtccGetDateTime(&cdt);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
tmdt.tm_year = (cdt.s.year >> 4) * 10 + (cdt.s.year & 0x0F) + 100;
tmdt.tm_mon = (cdt.s.month >> 4) * 10 + (cdt.s.month & 0x0F) - 1;
tmdt.tm_mday = (cdt.s.day >> 4) * 10 + (cdt.s.day & 0x0F);
tmdt.tm_hour = (cdt.s.hour >> 4) * 10 + (cdt.s.hour & 0x0F);
tmdt.tm_min = (cdt.s.minute >> 4) * 10 + (cdt.s.minute & 0x0F);
tmdt.tm_sec = (cdt.s.second >> 4) * 10 + (cdt.s.second & 0x0F);
tmdt.tm_isdst = 0;
ctt = mktime(&tmdt);
//ʱ<><CAB1><EFBFBD><EFBFBD>ǰ
ctt -= backDays*24*3600;
ldt = localtime(&ctt);
cdt_noweek.s.year = ((*ldt).tm_year - 100) / 10 * 16 + ((*ldt).tm_year - 100) % 10;
cdt_noweek.s.month = ((*ldt).tm_mon + 1) / 10 * 16 + ((*ldt).tm_mon + 1) % 10;
cdt_noweek.s.day = ((*ldt).tm_mday) / 10 * 16 + ((*ldt).tm_mday) % 10;
cdt_noweek.s.hour = ((*ldt).tm_hour) / 10 * 16 + ((*ldt).tm_hour) % 10;
cdt_noweek.s.minute = ((*ldt).tm_min) / 10 * 16 + ((*ldt).tm_min) % 10;
cdt_noweek.s.second = ((*ldt).tm_sec) / 10 * 16 + ((*ldt).tm_sec) % 10;
return cdt_noweek;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>
static void SS_Store_SuppleFlagMachine(void)
{
switch(step_clear_flag)
{
case SS_STATE_S0:
{
if(getStoreMsg(SS_StoreMsg1) == TRUE)//<2F><><EFBFBD><EFBFBD><E6B2B9><EFBFBD><EFBFBD>־
{
setStoreMsg(SS_StoreMsg1,FALSE);
if((Sys_data_object.P1.func_cfg_bytes[0]>0)&&NbiotIfOnline())//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ֵ,<2C>򲻱<EFBFBD><F2B2BBB1><EFBFBD><EFBFBD><EFBFBD>
{
NB_SS_Control_SetPara(NB_UploadFailTimes, 0);
step_clear_flag = SS_STATE_S0;
}
else
{
Sys_data_object.P1.Supplemental_send_flag.datas |=(0x00001<<Sys_data_object.P1.histroy_r);
step_clear_flag = SS_STATE_S1;
}
}
else if(getStoreMsg(SS_StoreMsg2) == TRUE)//<2F>嵱ǰ<E5B5B1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
{
setStoreMsg(SS_StoreMsg2,FALSE);
Sys_data_object.P1.Supplemental_send_flag.datas &=(~(0x0001<<(Sys_data_object.P1.histroy_r)));
step_clear_flag = SS_STATE_S1;
}
else if(getStoreMsg(SS_StoreMsg5) == TRUE)//<2F><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>־
{
setStoreMsg(SS_StoreMsg5,FALSE);
Sys_data_object.P1.Supplemental_send_flag.datas = 0;
step_clear_flag = SS_STATE_S1;
}
}
break;
case SS_STATE_S1:
{
if(EepIfIdle())
{
EepWrite(&Sys_data_object.P1.Supplemental_send_flag.datas_map.data0, FRAME_NBIot_BUBAO_FLAG, 6, &s_eep_complete_ShenShui);
step_clear_flag = SS_STATE_WAIT;
}
}
break;
case SS_STATE_WAIT:
{
if(EepIfIdle())
{
step_clear_flag = SS_STATE_S0;
}
}
break;
default:
{
step_clear_flag = SS_STATE_S0;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><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);
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(getStoreMsg(SS_StoreMsg4) == TRUE)//<2F><><EFBFBD>µ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
setStoreMsg(SS_StoreMsg4,FALSE);
step_save_supplt = SS_STATE_S30;
}
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_ShenShui);
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_ShenShui);
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_ShenShui);
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_ShenShui);
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_ShenShui);
}
}
}
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_ShenShui);
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>*/
case SS_STATE_S30:
{
if(TASK_IDLE == EepIfIdle())
{
EepRead(FRAME_NBIot_HISTORY_READ_ADD+(Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), &store_frame.buf[0], PACK_NUM_GPRS, &s_eep_complete_ShenShui);
step_save_supplt = SS_STATE_S31;
}
}
break;
case SS_STATE_S31://<2F><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
{
if(TASK_IDLE == EepIfIdle())
{
DateTime_noweek tempTime;
tempTime = getBackDateTimeNoWeek(1);
RtccGetDateTime(&shenshui_rtcc_time);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ж<EFBFBD>
if( (tempTime.s.year != store_frame.data.StepFlowStartTime[5])||
(tempTime.s.month != store_frame.data.StepFlowStartTime[4])||
(tempTime.s.day != store_frame.data.StepFlowStartTime[3]))
{
//<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;//<2F>޸<EFBFBD>Ϊ<EFBFBD><CEAA>ǰʱ<C7B0><CAB1>,<2C><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
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;
}
}
Upload_RenewCurrentData(&store_frame);
EepWrite(store_frame.buf, (FRAME_NBIot_HISTORY_READ_ADD+ Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), PACK_NUM_GPRS, &s_eep_complete_ShenShui);
step_save_supplt = SS_STATE_WAIT;
}
}
break;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>дָ<D0B4><D6B8>*/
case SS_STATE_S40:
{
if(TASK_IDLE == EepIfIdle())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
new_jiange_total_flow.gp22_u32 = Gp30CheckDataApp(2);
old_jiange_total_flow.gp22_u32 = new_jiange_total_flow.gp22_u32;
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_ShenShui);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
case SS_STATE_WAIT:
{
if(TASK_IDLE == EepIfIdle())
{
step_save_supplt = SS_STATE_S0;
}
break;
}
default:
{
break;
}
}
}
/*******************************************************************************
* @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://ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
{
u8 temp_fail_times=0;
if(Sys_data_object.P3.ProductUpoadFailFlag)
{
temp_fail_times = Sys_data_object.P3.ProductUpoadFailFlag;
}
else
{
for(int i = 0; i < 32; i++)
{
if(((Sys_data_object.P1.Supplemental_send_flag.datas >> i) & 0x00000001) == 0x00000001)
{
temp_fail_times += 1;
}
}
}
return temp_fail_times;
}
case NB_SS_FormatError://<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
{
return signal_val.SignalStruct.format_error;
}
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)
{
switch(paraType)
{
case NB_HistroyReadIndex://<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵĶ<DDB5>ָ<EFBFBD><D6B8>
{
Sys_data_object.P1.histroy_w = data;
break;
}
case NB_UploadFailTimes://ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
{
SystemClearUploadAgain();
Sys_data_object.P1.Supplemental_send_flag.datas = data;
Sys_data_object.P3.ProductUpoadFailFlag = 0;
setStoreMsg(SS_StoreMsg5,TRUE);//temp_store_msg |= 0x20;//<2F><><EFBFBD><EFBFBD>EEPROM
break;
}
case NB_SS_FormatError://<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
{
signal_val.SignalStruct.format_error = data;
break;
}
default:
break;
}
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
void DataStoreInit(void)
{
Quanzhou_Store_InitApp();
if(Sys_data_object.P1.histroy_w>=PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_w=0;
}
if(Sys_data_object.P1.histroy_r>=PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_r=0;
}
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_SuppleFlagMachine();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>
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)&&(step_clear_flag == SS_STATE_S0)&&(QuanzhouStore_IfSleep()==TRUE))
{
return TRUE;
}
else
{
return FALSE;
}
}
#endif