X1UWaterWmbusISK/app/UWater_Frame/UWater_frame_func_ReplyGuan...

2138 lines
68 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_GS
#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 "UWater_frame_func_ReplyNB.h"
#include "UWater_frame_func_ReplyGuangShui.h"
static u8 s_eep_complete_GuangShui=0;
static u8 task_complete_GuangShui = PTL_PACK_BUSY;
static u8 g_frame_temp_buf_GuangShui[UP_BUF_SIZE]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
static u16 g_frame_temp_len_GuangShui=0;
static DateTime GuangShui_rtcc_time;
static STRUCT_FRAME_IES frame_struct_GuangShui; //<2F><>Լ<EFBFBD><D4BC>Ϣ
static u8 *new_message_data_rev_GuangShui;
static u8 up_deal_stat_GuangShui = UP_DEAL_S0;//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static STRUCT_FRAME_GS frame_struct_JM; //<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC>Ϣ
/*******<2A><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>*****************************************/
static STRUCT_FRAME_IES upload_struct_GuangShui; //<2F><>Լ<EFBFBD><D4BC>Ϣ
static u8 upload_frame_stat_GuangShui=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡״̬
static u8 upload_task_complete_GuangShui = PTL_PACK_FAIL;
static u16 upload_temp_len_GuangShui=0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
static UNION_SIGNAL signal_val;
static u8 *new_message_data_rev_jm; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
static DateTime rtcc_time_gs;
static u8 upload_packet_count=0; //<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>
static u8 gs_upload_fail_times=0;//<2F>ϱ<EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
static u8 upload_frame_retry_times=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
static u8 temp_upload_step=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>״̬
static u8 temp_store_msg=0; //<2F><><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
//<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>
//<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static STRU_UP_FRAME_GS upload_frame_gs;
//<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;
//<2F><>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ϱ<EFBFBD>
static u8 ls_save= FALSE;
static u8 ls_up= FALSE;
static u8 ls_save_cnt=0;
static STRU_UP_FRAME_GS ls_save_buf[6];//<2F>24Сʱ,5<><35><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD>
static RTCC_To_Float old_gs_total_flow;
static RTCC_To_Float new_gs_total_flow;
static u8 ls_upload_index=0;
static u8 ls_upload_flag=0;
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
static UNION_GS_STORE_INDEX his_save_para;
static u16 save_his_interval_cnt=0;
static TYP_STATE_SS his_save_step=SS_STATE_S0;
static RTCC_To_Float his_save_flow_value;
static u16 his_save_addr = EEP_ADDR_HIS_DATA;
static u8 his_save_flow_buf[5];
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
static u16 his_read_start_count=0;
static u16 his_read_end_count=0;
static u8 his_read_count;
static u16 his_read_addr = EEP_ADDR_HIS_DATA;
static u8 his_read_flow_buf[5];
static u8 his_read_check;
static DateTime his_read_start_time;
static UNION_2U8TOU16 his_read_period;
static RTCC_To_Float his_read_new_flow;
static RTCC_To_Float his_read_old_flow;
static SS_UNION_4U8TOU32 his_read_tempData;
static u8 his_read_tempBuf[6];
static long temp_diff_time;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static UNION_GS_UPLOAD_PARA linshi_jm; //<2F><>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
static DateTime rtcc_linshi_jm; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1>Ŀ<EFBFBD>ʼʱ<CABC><CAB1>
static u8 linshi_data_eff=0; //<2F><>¼<EFBFBD><C2BC>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1>ı<EFBFBD>־
//<2F><><EFBFBD>ݸ<EFBFBD>ʽת<CABD><D7AA>
static void u32HEXtoBCDData(u32 uiHEXdata,u8*ucBCDdata )
{
u8 ucHEXdata[10] = {0};
//2<>ֽ<EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תBCD<43>룬2<EBA3AC>ֽ<EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ0xffff=65535<33><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCD<43><44><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>3<EFBFBD><33><EFBFBD>ֽ<EFBFBD>װ<EFBFBD><D7B0>
ucHEXdata[1] = uiHEXdata%100;
ucBCDdata[0] = (ucHEXdata[1]/10)*0x10 + (ucHEXdata[1]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[2] = uiHEXdata%100;
ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[3] = uiHEXdata%100;
ucBCDdata[2] = (ucHEXdata[3]/10)*0x10 + (ucHEXdata[3]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[4] = uiHEXdata%100;
ucBCDdata[3] = (ucHEXdata[4]/10)*0x10 + (ucHEXdata[4]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[5] = uiHEXdata%100;
ucBCDdata[4] = (ucHEXdata[5]/10)*0x10 + (ucHEXdata[5]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[6] = uiHEXdata%100;
ucBCDdata[5] = (ucHEXdata[6]/10)*0x10 + (ucHEXdata[6]%10);
}
//<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_GuangShui;
switch(up_deal_stat_GuangShui)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
g_frame_temp_len_GuangShui =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((EEP_ADDR_CIRCLE_DATA +(temp*PACK_NUM_GPRS)), g_frame_temp_buf_GuangShui, 155, &s_eep_complete_GuangShui);
up_deal_stat_GuangShui = 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_GuangShui = PACK_NUM_GPRS;
task_complete_GuangShui = PTL_PACK_SUCCESS;
up_deal_stat_GuangShui = UP_DEAL_S0;
}
}
break;
default:
{
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
static void frame_func_s3_NB_ClearFailTimes(void)
{
static u8 temp_clear_buf[4];
if(TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_GuangShui = 0;
NB_SS_Control_SetPara(NB_SS_FormatError, 0);
NB_SS_Control_SetPara(NB_UploadFailTimes, 0);
temp_clear_buf[0]=0;
temp_clear_buf[1]=0;
temp_clear_buf[2]=0;
temp_clear_buf[3]=0;
EepWrite(temp_clear_buf, FRAME_NBIot_BUBAO_FLAG, 4, &s_eep_complete_GuangShui);
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
}
/*************************************<2A><>ˮ<EFBFBD><CBAE>Լ*******************************************************/
/**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:gs_ack_upload_frame
˵<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 01<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> 6 <EFBFBD>ֽ<EFBFBD> BCD <EFBFBD> YYMMDDHHNNSS 2020-01-11 12:15:30 200111121530
*/
void gs_ack_upload_frame(void)
{
DateTime rtcc_time_rcvjm;
g_frame_temp_len_GuangShui = 0;
RtccGetDateTime(&rtcc_time_gs); //<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
rtcc_time_rcvjm.s.second = *(new_message_data_rev_jm + 5); //second
rtcc_time_rcvjm.s.minute = *(new_message_data_rev_jm + 4); //MIN
rtcc_time_rcvjm.s.hour = *(new_message_data_rev_jm + 3); //Hour
rtcc_time_rcvjm.s.day = *(new_message_data_rev_jm + 2); //day
rtcc_time_rcvjm.s.month = *(new_message_data_rev_jm + 1); //mon
rtcc_time_rcvjm.s.year = *(new_message_data_rev_jm ); //year
long diff_time = 0;
diff_time = RtccCalculateDiffTime(&rtcc_time_rcvjm, &rtcc_time_gs);
if(diff_time < 0)
{
diff_time = 0 - diff_time;
}
if(diff_time < HOUR_TO_SECOND) //1h<31><68><EFBFBD>ڵ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ж<EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7>
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
}
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.year;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.month;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.day;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.hour;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.minute;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= rtcc_time_gs.s.second;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_FAIL;
}
/**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:gs_read_history_frame
˵<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯijһʱ<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>ʶ:2<EFBFBD>ֽڸ<EFBFBD>; <EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>ǰ,<EFBFBD>Ӧԭ<EFBFBD><EFBFBD>ظ<EFBFBD>ֵ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<EFBFBD><EFBFBD>:6<EFBFBD>ֽ<EFBFBD>BCD, 200111121530 (<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>Ϊ0ʱ,<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>:1<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> MID <EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD> FF<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>... ...:
*/
static void gs_read_history_frame(void)
{
switch(up_deal_stat_GuangShui)
{
case UP_DEAL_S0:
{
g_frame_temp_len_GuangShui =11;//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʼλ<CABC><CEBB>
RtccGetDateTime(&rtcc_time_gs);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
his_read_start_time.s.year=new_message_data_rev_jm[2];
his_read_start_time.s.month=new_message_data_rev_jm[3];
his_read_start_time.s.day=new_message_data_rev_jm[4];
his_read_start_time.s.hour=new_message_data_rev_jm[5];
his_read_start_time.s.minute=new_message_data_rev_jm[6];
his_read_start_time.s.second=new_message_data_rev_jm[7];
//ʱ<><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
his_read_count=new_message_data_rev_jm[8];
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
his_read_period.data_buf[0]=new_message_data_rev_jm[10];
his_read_period.data_buf[1]=new_message_data_rev_jm[9];
//<2F>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if(his_read_period.datas != his_save_para.Data.Period.datas)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>
up_deal_stat_GuangShui = UP_DEAL_S4;
}
else
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
temp_diff_time = RtccCalculateDiffTime(&rtcc_time_gs, &his_read_start_time);
if((temp_diff_time < (his_save_para.Data.Index_w.datas*his_save_para.Data.Period.datas*60))&&(temp_diff_time<(GS_HIS_STORE_MAX*his_save_para.Data.Period.datas*60)))
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if((his_read_count*his_save_para.Data.Period.datas*60)<temp_diff_time)
{
his_read_end_count = 0;
his_read_start_count = his_save_para.Data.Index_w.datas - (temp_diff_time/60)/his_save_para.Data.Period.datas;
up_deal_stat_GuangShui = UP_DEAL_S1;
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>
{
up_deal_stat_GuangShui = UP_DEAL_S4;
}
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>
{
up_deal_stat_GuangShui = UP_DEAL_S4;
}
}
}
break;
case UP_DEAL_S1://<2F><><EFBFBD>ݶ<EFBFBD>ȡ
{
if(TASK_IDLE == EepIfIdle())
{
his_read_addr = EEP_ADDR_HIS_DATA+(((his_read_start_count+his_read_end_count)%GS_HIS_STORE_MAX)*5);
EepRead(his_read_addr, &his_read_flow_buf[0], 5, &s_eep_complete_GuangShui);
up_deal_stat_GuangShui = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2://<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>:EE_BUF->FLOW_BUF->FLOW_FLOAT->FLOW_U8BUF->BCD
{
if(TASK_IDLE == EepIfIdle())
{
his_read_check = his_read_flow_buf[0]+his_read_flow_buf[1]+his_read_flow_buf[2]+his_read_flow_buf[3];
if(his_read_flow_buf[4] == his_read_check)
{
his_read_new_flow.buf[0] = his_read_flow_buf[0];
his_read_new_flow.buf[1] = his_read_flow_buf[1];
his_read_new_flow.buf[2] = his_read_flow_buf[2];
his_read_new_flow.buf[3] = his_read_flow_buf[3];
if(his_read_end_count==0)
{
his_read_tempData.datas = (u32)(his_read_new_flow.gp22_float*10);
u32HEXtoBCDData(his_read_tempData.datas, &his_read_tempBuf[0]);
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= 0x20;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[5];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[4];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[3];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[2];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[0];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
his_read_old_flow.gp22_float = his_read_new_flow.gp22_float;
}
else
{
his_read_tempData.datas = (u16)((his_read_new_flow.gp22_float - his_read_old_flow.gp22_float)*10);
u32HEXtoBCDData(his_read_tempData.datas, &his_read_tempBuf[0]);
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[2];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= his_read_tempBuf[0];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
his_read_old_flow.gp22_float = his_read_new_flow.gp22_float;
}
if((his_read_end_count < (his_read_count-1))&&(his_read_end_count<47))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
his_read_end_count++;
up_deal_stat_GuangShui = UP_DEAL_S1;
}
else//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
up_deal_stat_GuangShui = UP_DEAL_S3;
}
}
else//<2F><><EFBFBD>󷵻<EFBFBD>
{
if(his_read_end_count == 0)//<2F><><EFBFBD><EFBFBD><EFBFBD>
{
up_deal_stat_GuangShui = UP_DEAL_S4;
}
else
{
up_deal_stat_GuangShui = UP_DEAL_S3;
}
}
}
}
break;
case UP_DEAL_S3:
{
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//Ӧ<><D3A6>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
g_frame_temp_buf_GuangShui[2]=his_read_start_time.s.year;
g_frame_temp_buf_GuangShui[3]=his_read_start_time.s.month;
g_frame_temp_buf_GuangShui[4]=his_read_start_time.s.day;
g_frame_temp_buf_GuangShui[5]=his_read_start_time.s.hour;
g_frame_temp_buf_GuangShui[6]=his_read_start_time.s.minute;
g_frame_temp_buf_GuangShui[7]=his_read_start_time.s.second;
//Ӧ<><D3A6><><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
g_frame_temp_buf_GuangShui[8]=his_read_end_count;//ʵ<>ʶ<EFBFBD>ȡ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
//Ӧ<><D3A6><><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_frame_temp_buf_GuangShui[9]=his_read_period.data_buf[1];
g_frame_temp_buf_GuangShui[10]=his_read_period.data_buf[0];
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
break;
case UP_DEAL_S4://<2F><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
{
//ָ<><D6B8>ִ<EFBFBD><D6B4>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD> MID <20><>ȫ<EFBFBD><C8AB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> FF<46><46><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//Ӧ<><D3A6>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
g_frame_temp_buf_GuangShui[2]=0xFF;
g_frame_temp_buf_GuangShui[3]=0xFF;
g_frame_temp_buf_GuangShui[4]=0xFF;
g_frame_temp_buf_GuangShui[5]=0xFF;
g_frame_temp_buf_GuangShui[6]=0xFF;
g_frame_temp_buf_GuangShui[7]=0xFF;
//Ӧ<><D3A6><><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
g_frame_temp_buf_GuangShui[8]=0xFF;
//Ӧ<><D3A6><><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_frame_temp_buf_GuangShui[9]=0xFF;
g_frame_temp_buf_GuangShui[10]=0xFF;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
break;
default:
{
up_deal_stat_GuangShui = UP_DEAL_S0;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>ʱ<EFBFBD><CAB1>
void jm_set_time()
{
switch(up_deal_stat_GuangShui)
{
case UP_DEAL_S0:
{
g_frame_temp_len_GuangShui = 0;
rtcc_time_gs.s.year = *(new_message_data_rev_jm + 2);
rtcc_time_gs.s.month = *(new_message_data_rev_jm + 3);
rtcc_time_gs.s.day = *(new_message_data_rev_jm + 4);
rtcc_time_gs.s.hour = *(new_message_data_rev_jm + 5);
rtcc_time_gs.s.minute= *(new_message_data_rev_jm + 6);
rtcc_time_gs.s.second= *(new_message_data_rev_jm + 7);
if(SUCCESS_IES == Rtcc_Check_DateTime(&rtcc_time_gs))//<2F><><EFBFBD>ںϷ<DABA>
{
RtccSetDateTime(&rtcc_time_gs);
up_deal_stat_GuangShui = UP_DEAL_S1;
}
else
{
up_deal_stat_GuangShui = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S1:
{
RtccGetDateTime(&rtcc_time_gs);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//time
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.year;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.month;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.day;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.hour;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.minute;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = rtcc_time_gs.s.second;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
break;
case UP_DEAL_S2:
{
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//time
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
break;
default:
{
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݴ<EFBFBD><DDB4>̼<EFBFBD><CCBC><EFBFBD>
void jm_set_save_interval()
{
if (TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><><EFBFBD><EFBFBD>
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm + 2);
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm + 3);
his_save_para.Data.Period.data_buf[1]=*(new_message_data_rev_jm + 2);
his_save_para.Data.Period.data_buf[0]=*(new_message_data_rev_jm + 3);
EepWrite(&his_save_para.data_buf[0], EEP_ADDR_HIS_INDEX, 6, &s_eep_complete_GuangShui);
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
void jm_up_set()
{
if (TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><>ʼʱ<CABC><CAB1>
linshi_jm.Data.start_time_h = *(new_message_data_rev_jm+2);
linshi_jm.Data.start_time_m=*(new_message_data_rev_jm+3);
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm + 2);
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm + 3);
//<2F>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>
linshi_jm.Data.up_interval.data_buf[1]=*(new_message_data_rev_jm+4); ////<2F>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>
linshi_jm.Data.up_interval.data_buf[0]=*(new_message_data_rev_jm+5);
if(linshi_jm.Data.up_interval.datas <=60) //<2F><>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Сʱ
{
linshi_jm.Data.up_interval.datas = 60;
}
else if(linshi_jm.Data.up_interval.datas >= 60*24) //<2F><>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24
{
linshi_jm.Data.up_interval.datas =60*24;
}
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = linshi_jm.Data.up_interval.data_buf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = linshi_jm.Data.up_interval.data_buf[0];
//<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
linshi_jm.Data.data_interval.data_buf[1]=*(new_message_data_rev_jm+6);
linshi_jm.Data.data_interval.data_buf[0]=*(new_message_data_rev_jm+7);
if(linshi_jm.Data.data_interval.datas<=5) //<2F><>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD>
{
linshi_jm.Data.data_interval.datas=5;
}
else if(linshi_jm.Data.data_interval.datas>=60*12)
{
linshi_jm.Data.data_interval.datas=60*12;
}
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = linshi_jm.Data.data_interval.data_buf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = linshi_jm.Data.data_interval.data_buf[0];
//<2F><>ɢֵ
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0;
//<2F><>Чʱ<D0A7><CAB1>
linshi_jm.Data.effective_time.data_buf[1]=*(new_message_data_rev_jm+10);
linshi_jm.Data.effective_time.data_buf[0]=*(new_message_data_rev_jm+11);
if(linshi_jm.Data.effective_time.datas >=24*60)
{
linshi_jm.Data.effective_time.datas =24*60;
}
if(linshi_jm.Data.effective_time.datas==0)
{
linshi_jm.Data.effective_time.datas=24*60;
}
RtccGetDateTime(&rtcc_linshi_jm); //<2F><>Чʱ<D0A7><CAB1>ֱ<EFBFBD>Ӹ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rtcc_linshi_jm.s.hour = linshi_jm.Data.start_time_h;
rtcc_linshi_jm.s.minute = linshi_jm.Data.start_time_m;
EepWrite(&linshi_jm.data_buf[0], EEP_ADDR_TEMP_STORE_UPLOAD, 8, &s_eep_complete_GuangShui);
linshi_data_eff=1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
ls_save_cnt=0;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
ls_upload_index=0;//<2F><>ʱ<EFBFBD>ϱ<EFBFBD>ָ<EFBFBD><D6B8>
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
}
//<2F><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
void jm_Up_read()
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.start_time_h;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.start_time_m;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.up_interval.data_buf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.up_interval.data_buf[0];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.data_interval.data_buf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= linshi_jm.Data.data_interval.data_buf[0];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= 0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++]= 0;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
//<2F>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
u8 get_lset_judg(u8*save,u8*up) //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
long diff_time;
static u32 time_min;
RtccGetDateTime(&rtcc_time_gs);
diff_time = RtccCalculateDiffTime(&rtcc_time_gs,&rtcc_linshi_jm)/(60); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(diff_time>24*60)
{
linshi_data_eff=0;
}
if((diff_time <linshi_jm.Data.effective_time.datas)&&linshi_data_eff&&(diff_time>0))
{
time_min= ((rtcc_time_gs.s.hour >> 4) * 10 + (rtcc_time_gs.s.hour & 0x0F))*60;
time_min+= (rtcc_time_gs.s.minute >> 4) * 10 + (rtcc_time_gs.s.minute & 0x0F);
if(linshi_jm.Data.up_interval.datas<24*60)
{
if((time_min%linshi_jm.Data.up_interval.datas)==0)
{
*up=TRUE;
}
else
{
*up=FALSE;
}
}
else
{
*up=FALSE;
}
if(time_min%linshi_jm.Data.data_interval.datas==0)
{
*save=TRUE;
}
else
{
*save=FALSE;
}
return TRUE;
}
else
{
*save=FALSE;
*up=FALSE;
return FALSE;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
void jm_set_center_add()
{
static u16 add_len;
u16 num_ip=0;
u8 *mack[5];
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
add_len=frame_struct_JM.data_len.to_uint16-15-2; //<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>ȥ<EFBFBD><C8A5>mid
for(u8 l=2; l<add_len; l++)
{
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm+l);
if(((char)(*(new_message_data_rev_jm+l))==':'))
{
*(new_message_data_rev_jm+l)='.';
}
if(((char)(*(new_message_data_rev_jm+l))=='.')&&(num_ip<=3))
{
mack[0]=new_message_data_rev_jm+1;
mack[++num_ip]=(new_message_data_rev_jm+l);
if(num_ip==4)
{
for(u8 n=0; n<4; n++)
{
if(mack[n+1]-mack[n]==2)
{
Sys_data_object.P1.server_ip[n]=*(mack[n]+1)-0x30;
}
else if(mack[n+1]-mack[n]==3)
{
Sys_data_object.P1.server_ip[n]=(*(mack[n]+1)-0x30)*10+(*(mack[n]+2)-0x30);
}
else if(mack[n+1]-mack[n]==4)
{
Sys_data_object.P1.server_ip[n]=(*(mack[n]+1)-0x30)*100+(*(mack[n]+2)-0x30)*10+(*(mack[n]+3)-0x30);
}
}
if(new_message_data_rev_jm+2+add_len-mack[4]==3) //port Ϊ1λ <20><>
{
Sys_data_object.P1.server_port.datas=*(mack[4]+1)-0x30;
}
else if(new_message_data_rev_jm+2+add_len-mack[4]==4) //port Ϊ<><CEAA>λ
{
Sys_data_object.P1.server_port.datas=(*(mack[4]+1)-0x30)*10+*(mack[4]+2)-0x30;
}
else if(new_message_data_rev_jm+2+add_len-mack[4]==5) //port Ϊ3λ
{
Sys_data_object.P1.server_port.datas=(*(mack[4]+1)-0x30)*100+(*(mack[4]+2)-0x30)*10+(*(mack[4]+3)-0x30);
}
else if(new_message_data_rev_jm+2+add_len-mack[4]==6) //port Ϊ4λ
{
Sys_data_object.P1.server_port.datas=(*(mack[4]+1)-0x30)*1000+(*(mack[4]+2)-0x30)*100+(*(mack[4]+3)-0x30)*10+(*(mack[4]+4)-0x30);
}
else if(new_message_data_rev_jm+2+add_len-mack[4]==7) //port Ϊ5λ
{
Sys_data_object.P1.server_port.datas=(*(mack[4]+1)-0x30)*10000
+(*(mack[4]+2)-0x30)*1000+(*(mack[4]+3)-0x30)*100+(*(mack[4]+4)-0x30)*10+(*(mack[4]+5)-0x30);
}
}
}
}
EepWrite(&Sys_data_object.P1.server_ip[0], FRAME_NBIot_IP, 6, &s_eep_complete_GuangShui);
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
}
//<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ģʽ<><D6BB><EFBFBD><EFBFBD>֡,<2C><>ʵ<EFBFBD><CAB5>Ӧ<EFBFBD><D3A6>
void jm_set_mode()
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>Чʱ<D0A7><CAB1>
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0x00;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0x00;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0x00;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ,(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַָ<D6B7><D6B8><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD> NB ˮ<><CBAE>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>NB ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD> NB ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ָ<EFBFBD>ָ<EFBFBD><D6B8>)
void jm_set_add_frame() //<2F><>֡
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><EFBFBD><E8B1B8>ַ
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0xFF;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD>ü<EFBFBD><C3BC>ܱ<EFBFBD>־,<2C><>Ч
void jm_encrypted_data_frame()
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><><EFBFBD>ܱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>Կ
for(int i=0;i<17;i++)
{
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = *(new_message_data_rev_jm+2+i);
}
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
//<2F><>ѯ<EFBFBD><D1AF>ʷ<EFBFBD><CAB7><EFBFBD>ݴ<EFBFBD><DDB4>̼<EFBFBD><CCBC><EFBFBD>
void jm_read_interval_frame()
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
//<2F><><EFBFBD><EFBFBD>
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = his_save_para.Data.Period.data_buf[1];
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = his_save_para.Data.Period.data_buf[0];
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
void jm_read_add_frame()
{
g_frame_temp_len_GuangShui =0;
//MID
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI0;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = frame_struct_GuangShui.DI1;
for (int i = 0; i < 4; i++)
{
if (Sys_data_object.P1.server_ip[i] < 10)
{
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = Sys_data_object.P1.server_ip[i] + 0x30;
}
else if (Sys_data_object.P1.server_ip[i] < 100)
{
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_ip[i] / 10) + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_ip[i] % 10) + 0x30;
}
else
{
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_ip[i] / 100) + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_ip[i] / 10) % 10 + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_ip[i] % 10) + 0x30;
}
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = '.';
}
g_frame_temp_len_GuangShui--;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = ':';
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_port.datas / 10000) + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_port.datas % 10000) / 1000 + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_port.datas % 1000) / 100 + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_port.datas % 100) / 10 + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = (Sys_data_object.P1.server_port.datas % 10) + 0x30;
g_frame_temp_buf_GuangShui[g_frame_temp_len_GuangShui++] = 0x0;
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_SUCCESS;
}
/****************************************************************************************************/
//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Լ
u8 crack_frame_GS(u16 frame_lenth,u8 *frame_buffer)
{
u16 i;
u16 j;
u16 endloc = 0;
u16 framelen = 0;
if (frame_lenth > FRAME_LEN_MAX) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return (ERROR_IES);
}
if (frame_lenth < FRAME_LEN_MIN) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>СЭ<D0A1><D0AD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
{
return (ERROR_IES);
}
for (i = 0; i < frame_lenth; i++)
{
if (FRAME_HEAD_JM == *frame_buffer) //<2F>ҵ<EFBFBD>֡ͷ
{
frame_struct_JM.locn = i; //<2F><>ס֡ͷ<D6A1><CDB7>Receive_bufλ<66><CEBB>
frame_struct_JM.len.to_uint8[1] = *(frame_buffer + 1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
frame_struct_JM.len.to_uint8[0] = *(frame_buffer + 2);
framelen = frame_struct_JM.len.to_uint16+2; //֡<><D6A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ͷβ<CDB7><CEB2>
if (frame_struct_JM.len.to_uint16 > (frame_lenth - i)) //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ͨѶ<CDA8><D1B6>Լǡ<D4BC><C7A1><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>縴λ
{
return (ERROR_IES);
}
endloc = framelen - 1;
if ((FRAME_END_JM == frame_buffer[endloc]) && (endloc <= frame_lenth)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>Ч
{
frame_struct_JM.crc = 0;
for (j = 0; j < (framelen - 2); j++)
{
frame_struct_JM.crc = (u8)(frame_struct_JM.crc + frame_buffer[j]); //<2F><>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
}
if (frame_struct_JM.crc == frame_buffer[endloc - 1]) //jУ<6A><D0A3>ͨ<EFBFBD><CDA8>
{
frame_struct_JM.frame_ctrl = *(frame_buffer + 13); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((*(frame_buffer + 3) & 0x40) )//<2F><><EFBFBD><EFBFBD> <20><>֡<EFBFBD><D6A1>ʶ<EFBFBD>У<EFBFBD><D0A3><EFBFBD>Ҫ<EFBFBD>жϴ<D0B6>λ
{
}
else
{
frame_struct_JM.data_len.to_uint8[1] = *(frame_buffer + 1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򳤶<EFBFBD>
frame_struct_JM.data_len.to_uint8[0] = *(frame_buffer + 2);
/* for (j = 0; j < (frame_struct_JM.data_len.to_uint16-15); j++)//<2F><><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>
{
jm_rcv_buf[j] = *(frame_buffer + 15 + j);
}*/
new_message_data_rev_jm = frame_buffer + frame_struct_JM.locn + 15;
frame_struct_GuangShui.ctrl = frame_struct_JM.frame_ctrl;
frame_struct_GuangShui.DI0 = *(new_message_data_rev_jm + 0);//MID
frame_struct_GuangShui.DI1 = *(new_message_data_rev_jm + 1);//MID
}
return (SUCCESS_IES);
}
}
}
frame_buffer++;
}
return (ERROR_IES);
}
//<2F><><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Լ
u8 crack_frame_GuangShui(u16 frame_lenth,u8 *frame_buffer)
{
u8 temp_res = crack_frame_IES_Base(frame_lenth, frame_buffer, &frame_struct_GuangShui);
if(temp_res == SUCCESS_IES)
{
new_message_data_rev_GuangShui = frame_buffer + frame_struct_GuangShui.head_site + 16;
return SUCCESS_IES;
}
else if(crack_frame_GS(frame_lenth, frame_buffer) == SUCCESS_IES)//<2F><>ˮ<EFBFBD><CBAE>Լ
{
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
u8 up_deal_code_GuangShui(void)
{
task_complete_GuangShui = PTL_PACK_BUSY;
switch(frame_struct_GuangShui.ctrl)
{
case SS_CLEAR_FAIL_TIMES_CTRL:
{
frame_func_s3_NB_ClearFailTimes();
frame_struct_GuangShui.ack_ctrl = SS_ACK_CLEAR_FAIL_TIMES_CTRL;
}
break;
case SS_READ_HIS_CTRL:
{
switch(frame_struct_GuangShui.DI1)
{
case SS_READ_HIS_CTRL_ID1://<2F><>ˮ<EFBFBD><CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
frame_func_reply_NB_ReadHistoryData();
frame_struct_GuangShui.ack_ctrl = SS_ACK_READ_HIS_CTRL;
}
break;
default:
{
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_FAIL;
}
}
}
break;
//<2F><>ˮ<EFBFBD><CBAE>Լ
case READ_MET_CTRL_01: //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
{
gs_ack_upload_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_01;
}
break;
case READ_MET_CTRL_03: //<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
{
gs_ack_upload_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_03;
}
break;
case READ_MET_CTRL_02: //<2F><><EFBFBD>ݲ<EFBFBD>ѯ
{
gs_read_history_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_02;
}
break;
case READ_MET_CTRL_04: //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
jm_set_time();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_04;
}
break;
case READ_MET_CTRL_05: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>
{
jm_set_save_interval();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_05;
}
break;
case READ_MET_CTRL_06: //<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
jm_up_set();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_06;
}
break;
case READ_MET_CTRL_07: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
{
jm_set_center_add();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_07;
}
break;
case READ_MET_CTRL_08: //<2F><><EFBFBD><EFBFBD>ģʽ
{
jm_set_mode();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_08;
}
break;
case READ_MET_CTRL_09: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ
{
jm_set_add_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_09;
}
break;
case READ_MET_CTRL_010: //<2F><><EFBFBD>ü<EFBFBD><C3BC>ܱ<EFBFBD>־
{
jm_encrypted_data_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_010;
}
break;
case READ_MET_CTRL_011: //<2F><>ѯ<EFBFBD><D1AF>ʷ<EFBFBD><CAB7><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>
{
jm_read_interval_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_011;
}
break;
case READ_MET_CTRL_012: //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
jm_Up_read();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_012;
}
break;
case READ_MET_CTRL_013: //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
{
jm_read_add_frame();
frame_struct_GuangShui.ack_ctrl = READ_MET_CTRL_013;
}
break;
default:
{
up_deal_stat_GuangShui = UP_DEAL_S0;
task_complete_GuangShui = PTL_PACK_FAIL;
}
break;
}
return task_complete_GuangShui;
}
void Frame_ResetDealState_GuangShui(void)
{
up_deal_stat_GuangShui = UP_DEAL_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>λ
}
void Frame_ack_GS(STRUCT_FRAME_IES temp_struct, u8* p_temp_buf, u16 p_temp_len, u8* p_send_buf, u16* p_send_len)
{
int i = 0;
int temp_pack_len;
UNION_2U8TOU16 temp_data;
MEASURE_UPLOAD_INFO temp_UploadInfo;
u8 temp_buf1[24];
u8 temp_buf2[24];
u32 temp_cell_id=0;
temp_pack_len = 0;
p_send_buf[temp_pack_len++] = FRAME_HEAD_JM;//֡<><D6A1>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>69H<39><48>
p_send_buf[temp_pack_len++] = ((48+p_temp_len)>>8);//֡<><D6A1><EFBFBD><EFBFBD> <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ
p_send_buf[temp_pack_len++] = (48+p_temp_len)&0xFF;
p_send_buf[temp_pack_len++] = FRAME_MARK_JM;//֡<><D6A1>ʶ <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> 1bit<69><74><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>֡ 2bit<69><74>֡<EFBFBD><D6A1><EFBFBD><EFBFBD> 4bit<69><74> <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD> 1bit
p_send_buf[temp_pack_len++] = FRAME_TYPE_JM;//Э<><D0AD><EFBFBD><20><><EFBFBD>汾 4bit<69><74><EFBFBD>Ӱ汾 4bit
//<2F><EFBFBD><E8B1B8>ַ 8Byte
p_send_buf[temp_pack_len++] = 0x79;
for (i = 0; i < 7; i++)
{
p_send_buf[temp_pack_len++] = Sys_data_object.P1.met_addr[i];
}
p_send_buf[temp_pack_len++] = temp_struct.ack_ctrl; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
p_send_buf[temp_pack_len++] = FRAME_HEAD_JM;//֡ȷ<D6A1>Ϸ<EFBFBD><CFB7><EFBFBD>69H<39><48>
/////////////////////////<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>///////////////////////////////
//<2F><EFBFBD><E8B1B8>ʶ,<2C><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>С<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
p_send_buf[temp_pack_len++] =0x03;
//<2F><EFBFBD><E8B1B8>ѹ 02H E8H = 744 * 0.01 =7.44V
temp_data.datas = PowerCheckValueSys();
p_send_buf[temp_pack_len++] = temp_data.data_buf[1];
p_send_buf[temp_pack_len++] = temp_data.data_buf[0];
//<2F>ź<EFBFBD>ǿ<EFBFBD><C7BF> CSQ
temp_UploadInfo = UploadGetInfo_Base();
p_send_buf[temp_pack_len++] = temp_UploadInfo.metinfo.single_val;
//<2F><><EFBFBD>չ<EFBFBD><D5B9>ʣ<EFBFBD>RSRP<52><50><EFBFBD><EFBFBD> 2 <20>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ں<EFBFBD>
temp_UploadInfo.metinfo.RSRP_val /=10;
temp_UploadInfo.metinfo.RSRP_val =~temp_UploadInfo.metinfo.RSRP_val+1;
p_send_buf[temp_pack_len++] = (temp_UploadInfo.metinfo.RSRP_val)>>8;
p_send_buf[temp_pack_len++] = (temp_UploadInfo.metinfo.RSRP_val);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 2 <20>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ں<EFBFBD>
if(temp_UploadInfo.metinfo.snr_val>=0x8000)
{
temp_UploadInfo.metinfo.snr_val -= 0x8000;
temp_UploadInfo.metinfo.snr_val /= 10;
temp_UploadInfo.metinfo.snr_val = ~temp_UploadInfo.metinfo.snr_val+1;
}
else
{
temp_UploadInfo.metinfo.snr_val /= 10;
}
p_send_buf[temp_pack_len++] = temp_UploadInfo.metinfo.snr_val>>8;
p_send_buf[temp_pack_len++] = temp_UploadInfo.metinfo.snr_val;
//<2F><><EFBFBD>ǵȼ<C7B5>
p_send_buf[temp_pack_len++] = temp_UploadInfo.metinfo.ecl_val;
//С<><D0A1> ID 4Byte
NbiotGetCell_ID(temp_buf1);
for(i=0;i<CELL_ID_SIZE;i++)
{
if(temp_buf1[i] != 0)
{
temp_cell_id <<= 4;
if(temp_buf1[i] <= '9')
{
temp_cell_id |= temp_buf1[i]-'0';
}
else if((temp_buf1[i] <= 'f')&&(temp_buf1[i] >= 'a'))
{
temp_cell_id |= temp_buf1[i]-'a'+10;
}
else if((temp_buf1[i] <= 'F')&&(temp_buf1[i] >= 'A'))
{
temp_cell_id |= temp_buf1[i]-'A'+10;
}
}
}
p_send_buf[temp_pack_len++] = temp_cell_id>>24;
p_send_buf[temp_pack_len++] = temp_cell_id>>16;
p_send_buf[temp_pack_len++] = temp_cell_id>>8;
p_send_buf[temp_pack_len++] = temp_cell_id>>0;
//IMEI <20><>ʶ 8Byte BCD
NbiotGetIMEI((char*)temp_buf1);
temp_buf2[0] = temp_buf1[0] - 0x30;
for(i=1;i<8;i++)
{
temp_buf2[i] = (temp_buf1[2*i]-0x30)&0x0F;
temp_buf2[i] |= ((temp_buf1[2*i-1]-0x30)<<4)&0xF0;
}
for(i=0;i<8;i++)
{
p_send_buf[temp_pack_len++] = temp_buf2[i];
}
//SIM <20><>ʶ 10Byte BCD
NbiotGetICCID((char*)temp_buf1);
for(i=0;i<10;i++)
{
p_send_buf[temp_pack_len++] = ((temp_buf1[i*2]-0x30)<<4)|(temp_buf1[2*i+1]-0x30);
}
/////////////////////////<2F><><EFBFBD>ݶ<EFBFBD> ///////////////////////////////
for(i=0;i<p_temp_len;i++)
{
p_send_buf[temp_pack_len++] = p_temp_buf[i];
}
//У<><D0A3><EFBFBD><EFBFBD>
p_send_buf[temp_pack_len] = 0;//У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
for(i = 0; i < temp_pack_len; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>´<EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC>///////
{
p_send_buf[temp_pack_len] += p_send_buf[i];
}
temp_pack_len++;
p_send_buf[temp_pack_len++] = FRAME_END_JM; //֡β
*p_send_len = temp_pack_len;
}
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void Frame_ack_GuangShui(u8* p_send_buf, u16* p_send_len)
{
STRUCT_FRAME_IES temp_struct;
temp_struct.ack_ctrl = frame_struct_GuangShui.ack_ctrl;
temp_struct.DI0 = frame_struct_GuangShui.DI0;
temp_struct.DI1 = frame_struct_GuangShui.DI1;
switch(temp_struct.ack_ctrl)
{
case SS_ACK_CLEAR_FAIL_TIMES_CTRL:
case SS_ACK_READ_HIS_CTRL:
{
temp_struct.sta = frame_struct_GuangShui.sta;
temp_struct.serial_num0 = frame_struct_GuangShui.serial_num0;
temp_struct.serial_num1 = frame_struct_GuangShui.serial_num1;
Frame_ack_IesBase(temp_struct,g_frame_temp_buf_GuangShui, g_frame_temp_len_GuangShui, p_send_buf, p_send_len);
}
break;
default://<2F><>ˮ<EFBFBD><CBAE>Լ
{
Frame_ack_GS(temp_struct,g_frame_temp_buf_GuangShui, g_frame_temp_len_GuangShui, 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><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
static void UploadData_GS(void)
{
SS_UNION_4U8TOU32 tempData;
u8 temp_buf[6];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
upload_frame_gs.data.Datetime[0] = upload_frame.data.StepFlowStartTime[5];
upload_frame_gs.data.Datetime[1] = upload_frame.data.StepFlowStartTime[4];
upload_frame_gs.data.Datetime[2] = upload_frame.data.StepFlowStartTime[3];
upload_frame_gs.data.Datetime[3] = upload_frame.data.StepFlowStartTime[2];
upload_frame_gs.data.Datetime[4] = upload_frame.data.StepFlowStartTime[1];
upload_frame_gs.data.Datetime[5] = upload_frame.data.StepFlowStartTime[0];
//ʱ<><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
upload_frame_gs.data.StepCnt = 48;
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_gs.data.Step[0] =0;
upload_frame_gs.data.Step[1] =30;//30<33><30><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ݶδ<DDB6><CEB4><EFBFBD>
upload_frame_gs.data.DataCode = 0x20;
//<2F><>ͷ<EFBFBD>жȣ<D0B6><C8A3><EFBFBD>λ<EFBFBD><CEBB> L<><4C><EFBFBD><EFBFBD>6 <20>ֽ<EFBFBD> 12 λ BCD <20><EFBFBD><EBA3AC>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u32HEXtoBCDData(upload_frame.data.CurrentFlow.datas, &temp_buf[0]);
upload_frame_gs.data.StepFlow1[0] = temp_buf[5];
upload_frame_gs.data.StepFlow1[1] = temp_buf[4];
upload_frame_gs.data.StepFlow1[2] = temp_buf[3];
upload_frame_gs.data.StepFlow1[3] = temp_buf[2];
upload_frame_gs.data.StepFlow1[4] = temp_buf[1];
upload_frame_gs.data.StepFlow1[5] = temp_buf[0];
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(int i=0; i<47; i++)
{
tempData.data_buf[0] = upload_frame.data.StepFlow[i*2];
tempData.data_buf[1] = upload_frame.data.StepFlow[i*2+1];
tempData.data_buf[2] = 0;
tempData.data_buf[3] = 0;
u32HEXtoBCDData(tempData.datas, &temp_buf[0]);
upload_frame_gs.data.StepFlowN[i][0] = temp_buf[2];
upload_frame_gs.data.StepFlowN[i][1] = temp_buf[1];
upload_frame_gs.data.StepFlowN[i][2] = temp_buf[0];
}
}
static void UploadData_GS_Current(void)
{
U32_To_Float temp_float_data;
SS_UNION_4U8TOU32 tempData;
DateTime tempRtcc_time;
u8 temp_buf[6];
RtccGetDateTime(&tempRtcc_time);//<2F>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
upload_frame_gs.data.Datetime[0] = tempRtcc_time.s.year;
upload_frame_gs.data.Datetime[1] = tempRtcc_time.s.month;
upload_frame_gs.data.Datetime[2] = tempRtcc_time.s.day;
upload_frame_gs.data.Datetime[3] = tempRtcc_time.s.hour;
upload_frame_gs.data.Datetime[4] = tempRtcc_time.s.minute;
upload_frame_gs.data.Datetime[5] = tempRtcc_time.s.second;
//ʱ<><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
upload_frame_gs.data.StepCnt = 1;
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_gs.data.Step[0] =0;
upload_frame_gs.data.Step[1] =0;
//<2F><><EFBFBD>ݶδ<DDB6><CEB4><EFBFBD>
upload_frame_gs.data.DataCode = 0x20;
//<2F><>ͷ<EFBFBD>жȣ<D0B6><C8A3><EFBFBD>λ<EFBFBD><CEBB> L<><4C><EFBFBD><EFBFBD>6 <20>ֽ<EFBFBD> 12 λ BCD <20><EFBFBD><EBA3AC>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
tempData.datas = (u32)(temp_float_data.gp22_float*10);
u32HEXtoBCDData(tempData.datas, &temp_buf[0]);
upload_frame_gs.data.StepFlow1[0] = temp_buf[5];
upload_frame_gs.data.StepFlow1[1] = temp_buf[4];
upload_frame_gs.data.StepFlow1[2] = temp_buf[3];
upload_frame_gs.data.StepFlow1[3] = temp_buf[2];
upload_frame_gs.data.StepFlow1[4] = temp_buf[1];
upload_frame_gs.data.StepFlow1[5] = temp_buf[0];
}
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݴ洢
void GS_TempSaveProc(void)
{
u8 temp_buf[6];
SS_UNION_4U8TOU32 tempData;
u8 temp_index=(ls_save_cnt/48);
if(temp_index < 6)
{
if((ls_save_cnt%48)==0)//<2F>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>ڿ<EFBFBD>ʼ
{
for(int i=0;i<STRU_DATA_LEN_GS;i++)
{
ls_save_buf[temp_index].buf[i] =0;
}
new_gs_total_flow.gp22_u32 = Gp30CheckDataApp(2);
old_gs_total_flow.gp22_u32 = new_gs_total_flow.gp22_u32;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
ls_save_buf[temp_index].data.Datetime[0] = GuangShui_rtcc_time.s.year;
ls_save_buf[temp_index].data.Datetime[1] = GuangShui_rtcc_time.s.month;
ls_save_buf[temp_index].data.Datetime[2] = GuangShui_rtcc_time.s.day;
ls_save_buf[temp_index].data.Datetime[3] = GuangShui_rtcc_time.s.hour;
ls_save_buf[temp_index].data.Datetime[4] = GuangShui_rtcc_time.s.minute;
ls_save_buf[temp_index].data.Datetime[5] = GuangShui_rtcc_time.s.second;
//ʱ<><CAB1><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD>0
ls_save_buf[temp_index].data.StepCnt = 0;
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ls_save_buf[temp_index].data.Step[0] =linshi_jm.Data.data_interval.data_buf[1];
ls_save_buf[temp_index].data.Step[1] =linshi_jm.Data.data_interval.data_buf[0];
//<2F><><EFBFBD>ݶδ<DDB6><CEB4><EFBFBD>
ls_save_buf[temp_index].data.DataCode = 0x20;
//<2F><>ͷ<EFBFBD>жȣ<D0B6><C8A3><EFBFBD>λ<EFBFBD><CEBB> L<><4C><EFBFBD><EFBFBD>6 <20>ֽ<EFBFBD> 12 λ BCD <20><EFBFBD><EBA3AC>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tempData.datas = (u32)(new_gs_total_flow.gp22_float*10);
u32HEXtoBCDData(tempData.datas, &temp_buf[0]);
ls_save_buf[temp_index].data.StepFlow1[0] = temp_buf[5];
ls_save_buf[temp_index].data.StepFlow1[1] = temp_buf[4];
ls_save_buf[temp_index].data.StepFlow1[2] = temp_buf[3];
ls_save_buf[temp_index].data.StepFlow1[3] = temp_buf[2];
ls_save_buf[temp_index].data.StepFlow1[4] = temp_buf[1];
ls_save_buf[temp_index].data.StepFlow1[5] = temp_buf[0];
ls_save_buf[temp_index].data.StepCnt++;
}
else
{
new_gs_total_flow.gp22_u32 = Gp30CheckDataApp(2);
jiange_data.datas = (u16)((new_gs_total_flow.gp22_float - old_gs_total_flow.gp22_float)*10);
old_gs_total_flow.gp22_u32 = new_gs_total_flow.gp22_u32;
tempData.data_buf[0] = jiange_data.datas_map.data0;
tempData.data_buf[1] = jiange_data.datas_map.data1;
tempData.data_buf[2] = 0;
tempData.data_buf[3] = 0;
u32HEXtoBCDData(tempData.datas, &temp_buf[0]);
ls_save_buf[temp_index].data.StepFlowN[ls_save_buf[temp_index].data.StepCnt-1][0] = temp_buf[2];
ls_save_buf[temp_index].data.StepFlowN[ls_save_buf[temp_index].data.StepCnt-1][1] = temp_buf[1];
ls_save_buf[temp_index].data.StepFlowN[ls_save_buf[temp_index].data.StepCnt-1][2] = temp_buf[0];
ls_save_buf[temp_index].data.StepCnt++;
}
ls_save_cnt++;
}
}
int GetUploadDataCount(void)
{
if (Sys_data_object.P1.histroy_w >= Sys_data_object.P1.histroy_r)
return (Sys_data_object.P1.histroy_w - Sys_data_object.P1.histroy_r);
else
return (Sys_data_object.P1.histroy_w + PERIOD_DATA_NUM - Sys_data_object.P1.histroy_r);
}
void GetUploadDataResetState_GS(void)
{
upload_frame_stat_GuangShui =UP_DEAL_S0;
upload_task_complete_GuangShui = PTL_PACK_BUSY;
}
u8 GetUploadDataCheckIdle_GS(void)
{
if(UP_DEAL_S0 == upload_frame_stat_GuangShui)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
u8 GetUploadDataCheckTask_GS(void)
{
return upload_task_complete_GuangShui;
}
void GetUploadDataMachine_GS(u8 data_step, u8* p_send_buf, u16* p_send_len)
{
switch(upload_frame_stat_GuangShui)
{
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
upload_frame_stat_GuangShui = UP_DEAL_S1;
}
else if(data_step == UPLOAD_FRAME_UPLOAD_OK)//<2F><><EFBFBD>ͳɹ<CDB3>
{
gs_upload_fail_times = 0;
upload_frame_retry_times = 0;//<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
if(temp_upload_step == UP_DEAL_S10)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
Sys_data_object.P1.histroy_r++;
if(Sys_data_object.P1.histroy_r >= PERIOD_DATA_NUM)
{
Sys_data_object.P1.histroy_r = 0;
}
setStoreMsg(SS_StoreMsg3, TRUE);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дָ<D0B4><D6B8>
upload_frame_stat_GuangShui = UP_DEAL_S1;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>һ<EFBFBD><D2BB>
}
else if(temp_upload_step == UP_DEAL_S11)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>
{
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
else if(temp_upload_step == UP_DEAL_S30)//<2F><>ʱ<EFBFBD>ϱ<EFBFBD>
{
if(ls_upload_index < ls_save_cnt/48)
{
ls_upload_index++;
upload_frame_stat_GuangShui = UP_DEAL_S30;
}
else
{
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
}
}
else if(data_step == UPLOAD_FRAME_UPLOAD_RETRY)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>
{
upload_frame_stat_GuangShui = UP_DEAL_S21;
}
else if(data_step == UPLOAD_FRAME_ONLINE_FAIL) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
if(ls_upload_flag)//<2F><>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ls_upload_flag = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
}
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>
}
}
gs_upload_fail_times++;//ʧ<>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
else
{
ls_upload_flag = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S1:
{
if(ls_upload_flag)//<2F><>ʱ<EFBFBD>ϱ<EFBFBD>
{
upload_frame_stat_GuangShui = UP_DEAL_S30;
}
else
{
if(EepIfIdle())
{
upload_packet_count = GetUploadDataCount();
if(upload_packet_count > 0)
{
EepRead(EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_r*PACK_NUM_GPRS), &upload_frame.buf[0], PACK_NUM_GPRS, &s_eep_complete_GuangShui);
upload_frame_stat_GuangShui = UP_DEAL_S10;
}
else//û<>м<EFBFBD>¼,<2C>ϱ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
upload_frame_stat_GuangShui = UP_DEAL_S11;
}
}
}
}
break;
case UP_DEAL_S10://ת<><D7AA>ˮЭ<CBAE><D0AD><EFBFBD>ϱ<EFBFBD>֡
{
if(EepIfIdle())
{
temp_upload_step = UP_DEAL_S10;
UploadData_GS();
upload_temp_len_GuangShui = STRU_DATA_LEN_GS;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
upload_frame_stat_GuangShui = UP_DEAL_S20;
}
}
break;
case UP_DEAL_S11://<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
{
if(EepIfIdle())
{
temp_upload_step = UP_DEAL_S11;
UploadData_GS_Current();
upload_temp_len_GuangShui = STRU_DATA_LEN_GS_CURRENT;
upload_frame_stat_GuangShui = UP_DEAL_S20;
}
}
break;
case UP_DEAL_S20://<2F><><EFBFBD>ϴ<EFBFBD>֡
{
if(EepIfIdle())
{
upload_struct_GuangShui.ack_ctrl = 0x01;
Frame_ack_GS(upload_struct_GuangShui, upload_frame_gs.buf, upload_temp_len_GuangShui, p_send_buf, p_send_len);
upload_task_complete_GuangShui = PTL_PACK_SUCCESS;// <20>ɹ<EFBFBD>
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S21://<2F><><EFBFBD><EFBFBD>
{
if(upload_frame_retry_times < 3)
{
upload_frame_retry_times++;
upload_frame_stat_GuangShui = 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_FIX_TIME == GetEventUploadType())//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
gs_upload_fail_times++;//ʧ<>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else if(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType())//<2F>ش<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
}
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
}
break;
case UP_DEAL_S30://<2F><>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡
{
temp_upload_step = UP_DEAL_S30;
if(ls_upload_index <= ls_save_cnt/48)
{
for(int i=0;i<STRU_DATA_LEN_GS;i++)
{
upload_frame_gs.buf[i] = ls_save_buf[ls_upload_index].buf[i];
}
upload_temp_len_GuangShui = STRU_DATA_LEN_GS;//<2F><><EFBFBD>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
upload_frame_stat_GuangShui = UP_DEAL_S20;
}
else
{
ls_upload_flag = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
}
break;
default:
{
ls_upload_flag = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־
upload_task_complete_GuangShui = PTL_PACK_FAIL;
upload_frame_stat_GuangShui = UP_DEAL_S0;
}
break;
}
}
/*************************************************<2A><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>****************************/
//<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);
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_GuangShui);
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);
setStoreMsg(SS_StoreMsg6,TRUE);//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
RtccGetDateTime(&GuangShui_rtcc_time);
if(get_lset_judg(&ls_save,&ls_up))
{
if(ls_save)
{
setStoreMsg(SS_StoreMsg7,TRUE);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>Ϣ
}
if(ls_up)
{
ls_up=FALSE;
FrameSetMsgApp(MsgShenYang_NbUploadWarning);
ls_upload_flag = 1;
}
}
if((GuangShui_rtcc_time.s.minute==0x00)||(GuangShui_rtcc_time.s.minute==0x30))
{
FrameSetMsgApp(MsgSS_JianGeStore);//<2F><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>Ϣ
}
if ((GuangShui_rtcc_time.s.hour == 0)&&(GuangShui_rtcc_time.s.minute==0x00))//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<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;
}
//<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;
//<2F><EFBFBD><E6B4A2>Ϣ
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(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(RtccCheckMsgApp(RtccMsg_DataSave))//0<><EFBFBD><EFBFBD><E6B6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
RtccClearMsgApp(RtccMsg_DataSave);
step_save_supplt = SS_STATE_S10;
}
else if(FrameCheckMsgApp(MsgSS_JianGeStore)) //<2F><>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(MsgSS_JianGeStore);
step_save_supplt = SS_STATE_S20;
}
else if(FrameCheckMsgApp(Msg_ClearHisOther))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(Msg_ClearHisOther);
step_save_supplt = SS_STATE_S40;
}
else if(getStoreMsg(SS_StoreMsg3) == TRUE)//<2F><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>־
{
setStoreMsg(SS_StoreMsg3,FALSE);
step_save_supplt = SS_STATE_S3;
}
else if(getStoreMsg(SS_StoreMsg7) == TRUE)//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
setStoreMsg(SS_StoreMsg7,FALSE);
step_save_supplt = SS_STATE_S30;
}
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, (EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)), CURRENT_DATA_INFO_LEN, &s_eep_complete_GuangShui);
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], (EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+UPLOAD_TIME_ADDR), 7, &s_eep_complete_GuangShui);
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_GuangShui);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
case SS_STATE_S3://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
EepWrite(&Sys_data_object.P1.histroy_r, (FRAME_NBIot_BUBAO_FLAG+4), 2, &s_eep_complete_GuangShui);
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( (GuangShui_rtcc_time.s.year == store_frame.data.StepFlowStartTime[5])&&
(GuangShui_rtcc_time.s.month == store_frame.data.StepFlowStartTime[4])&&
(GuangShui_rtcc_time.s.day == store_frame.data.StepFlowStartTime[3]))
{
step_save_supplt = SS_STATE_S22;
}
else
{
EepRead(EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+STEP_FLOW_TIME_ADDR, &store_frame.data.StepFlowStartTime[0], 7, &s_eep_complete_GuangShui);
step_save_supplt = SS_STATE_S21;
}
}
}
break;
case SS_STATE_S21:
{
if(EepIfIdle())
{
if( (GuangShui_rtcc_time.s.year == store_frame.data.StepFlowStartTime[5])&&
(GuangShui_rtcc_time.s.month == store_frame.data.StepFlowStartTime[4])&&
(GuangShui_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]= GuangShui_rtcc_time.s.day;
store_frame.data.StepFlowStartTime[4]= GuangShui_rtcc_time.s.month;
store_frame.data.StepFlowStartTime[5]= GuangShui_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, (EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)), PACK_NUM_GPRS, &s_eep_complete_GuangShui);
}
}
}
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 = EEP_ADDR_CIRCLE_DATA+(Sys_data_object.P1.histroy_w*PACK_NUM_GPRS)+STEP_FLOW_START_ADDR +
BCD2HEX(GuangShui_rtcc_time.s.hour)*4 + (BCD2HEX(GuangShui_rtcc_time.s.minute)/30)*2;
EepWrite(&jiange_data.datas_map.data0, temp_step_flow_addr, 2, &s_eep_complete_GuangShui);
step_save_supplt = SS_STATE_WAIT;
}
}
break;
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case SS_STATE_S30:
{
GS_TempSaveProc();
step_save_supplt = SS_STATE_S0;
}
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_GuangShui);
step_save_supplt = SS_STATE_WAIT;
}
break;
}
case SS_STATE_WAIT:
{
if(TASK_IDLE == EepIfIdle())
{
step_save_supplt = SS_STATE_S0;
}
break;
}
default:
{
break;
}
}
}
//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢
static void SS_Store_HisDataMachine(void)
{
switch(his_save_step)
{
case SS_STATE_S0:
{
if(getStoreMsg(SS_StoreMsg6) == TRUE)//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢ÿ<E6B4A2><C3BF><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
setStoreMsg(SS_StoreMsg6,FALSE);
save_his_interval_cnt++;
}
if(save_his_interval_cnt > his_save_para.Data.Period.datas)
{
save_his_interval_cnt = 0;
his_save_step = SS_STATE_S1;
}
}
break;
case SS_STATE_S1:
{
if(TASK_IDLE == EepIfIdle())
{
his_save_flow_value.gp22_u32 = Gp30CheckDataApp(2);
his_save_flow_buf[0] = his_save_flow_value.buf[0];
his_save_flow_buf[1] = his_save_flow_value.buf[1];
his_save_flow_buf[2] = his_save_flow_value.buf[2];
his_save_flow_buf[3] = his_save_flow_value.buf[3];
his_save_flow_buf[4] = his_save_flow_buf[0]+his_save_flow_buf[1]+his_save_flow_buf[2]+his_save_flow_buf[3];
his_save_addr = EEP_ADDR_HIS_DATA+((his_save_para.Data.Index_w.datas%GS_HIS_STORE_MAX)*5);//<2F><><EFBFBD>㱾ʱ<E3B1BE><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢λ<E6B4A2><CEBB>
EepWrite(&his_save_flow_buf[0], his_save_addr, 5, &s_eep_complete_GuangShui);
his_save_step = SS_STATE_S2;
}
}
break;
case SS_STATE_S2://<2F><><EFBFBD><EFBFBD><EFBFBD>洢ָ<E6B4A2><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
his_save_para.Data.Index_w.datas++;
EepWrite(&his_save_para.Data.Index_w.data_buf[0], EEP_ADDR_HIS_INDEX, 4, &s_eep_complete_GuangShui);
his_save_step = SS_STATE_S0;
}
}
break;
default:
{
his_save_step = SS_STATE_S0;
}
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
{
temp_fail_times = gs_upload_fail_times;
}
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;
gs_upload_fail_times =0;
setStoreMsg(SS_StoreMsg5,TRUE);//<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;
}
}
void GuangShui_Store_InitApp(void)
{
TYP_STATE_QZ tmp_init_stat = QZ_STATE_S0;
if(Sys_data_object.P3.FirstPowerOnFlag == FIRST_POWER_ON_FLAG)
{
tmp_init_stat = QZ_STATE_S10;
}
else
{
tmp_init_stat = QZ_STATE_S20;
}
while (tmp_init_stat)
{
switch (tmp_init_stat)
{
case QZ_STATE_S0:
{
if (TASK_IDLE == EepIfIdle())
{
tmp_init_stat = QZ_STATE_S0;
}
break;
}
case QZ_STATE_S10://<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
his_save_para.Data.Period.datas = 1440;//Ĭ<><C4AC>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
his_save_para.Data.Index_w.datas = 0;
EepWrite(&his_save_para.data_buf[0], EEP_ADDR_HIS_INDEX, 6, &s_eep_complete_GuangShui);//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢
tmp_init_stat = QZ_STATE_S11;
}
break;
}
case QZ_STATE_S11://<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
linshi_jm.Data.up_interval.datas = 240;//4Сʱ<D0A1>ϱ<EFBFBD>
linshi_jm.Data.data_interval.datas = 5;//5<><35><EFBFBD>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD>
EepWrite(&his_save_para.data_buf[0], EEP_ADDR_HIS_INDEX, 6, &s_eep_complete_GuangShui);//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢
tmp_init_stat = QZ_STATE_S1;
}
break;
}
case QZ_STATE_S20://<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>,<2C><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_HIS_INDEX, &his_save_para.data_buf[0], 6, &s_eep_complete_GuangShui);
tmp_init_stat = QZ_STATE_S21;
}
break;
}
case QZ_STATE_S21://<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>,<2C><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_TEMP_STORE_UPLOAD, &linshi_jm.data_buf[0], 8, &s_eep_complete_GuangShui);
tmp_init_stat = QZ_STATE_S1;
}
break;
}
case QZ_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
tmp_init_stat = QZ_STATE_S0;
}
break;
}
default:
{
tmp_init_stat =QZ_STATE_S0;
break;
}
}
EepMachineDriver();
}
if(his_save_para.Data.Index_w.datas>0x80000000)
{
his_save_para.Data.Index_w.datas =0;
}
}
/****************************<2A><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֹ<EFBFBD><D6B9>ýӿ<C3BD>*********************************************/
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
void DataStoreInit(void)
{
Quanzhou_Store_InitApp();
GuangShui_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>ݴ洢
SS_Store_HisDataMachine();//<2F><>ʷ<EFBFBD><CAB7><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