P2UWaterJiangXi/app/UWater_Frame/UWater_frame_func_ReplyWuHa...

1481 lines
47 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_WHYW
#include "sys_processor.h"
#include "UWater_eeprom_driver.h"
#include "UWater_timer1us_driver.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_ReplyWuHanYW.h"
/*------------------------------ Variable Define ------------------------------------*/
static u8 s_eep_complete_WHYW=0;
static u8 task_complete_WHYW = PTL_PACK_BUSY; //<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static u8 g_frame_temp_buf_WHYW[UP_BUF_SIZE]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
static u16 g_frame_temp_len_WHYW=0;//<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֵij<D6B5><C4B3><EFBFBD>
static STRUCT_FRAME_WHYW frame_struct_WHYW; //<2F><>Լ<EFBFBD><D4BC>Ϣ<EFBFBD><EFBFBD><E1B9B9>
static u8 *new_message_data_rev_WHYW; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
static u8 up_deal_stat_WHYW = UP_DEAL_S0;//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
static DateTime whyw_protl_rtcc_time;
static u8 upload_count_flag=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
static u32 temp_upload_delay_time;
static u32 temp_upload_set_time;
static u8 temp_upload_hour_minute_time;
/*******<2A><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4>Ͷ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>*************************************/
static TYP_STATE_WHYW step_circle_data_store=WHYW_STATE_S0;
static U32_To_Float temp_float_data;
static u32 temp_CircleData;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>
static u16 uTemp_ee_addr;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
static u8 uTemp_read_len;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD>ݳ<EFBFBD><DDB3>ȱ<EFBFBD><C8B1><EFBFBD>
static UNION_2U8TOU16 u_circle_store_index_w;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>λ<EFBFBD><CEBB>
static UNION_2U8TOU16 u_circle_store_index_r;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB>
static u8 upload_data_count;//<2F><>֡<EFBFBD><D6A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
static u16 upload_packet_count;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡<EFBFBD><D6A1>
static u16 upload_packet_code;//<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
static u8 upload_packet_data_count;//<2F><>֡<EFBFBD><D6A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
static u8 upload_circle_buf[UPLOAD_CIRCLE_MAX_LEN];//EE<45><45>ȡ<EFBFBD><C8A1><EFBFBD>ڼ<EFBFBD>¼<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>
static DateTime upload_circle_rtcc_start;//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼʱ<CABC><CAB1>
static DateTime upload_circle_rtcc_end;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//static DateTime store_circle_rtcc_end;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʱ<EFBFBD><CAB1>
static UNION_4U8TOU32 temp_bcd_CircleData;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
static WHYW_UNION_EE_STORE whyw_ee;
/********<2A><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>************************************************/
static u8 upload_serial_num_sy=0;
static u8 temp_upload_step=0;
static u8 upload_frame_retry_times = 0;
static TYP_STATE_WHYW upload_frame_stat_whyw=WHYW_STATE_S0;
static u8 task_upload_complete_whyw = PTL_PACK_BUSY; //<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
static u8 g_upload_temp_buf_WHYW[300]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><><CAB5><EFBFBD>õ<EFBFBD>244
static u16 g_upload_temp_len_WHYW=0;
static STRUCT_FRAME_WHYW upload_struct_WHYW; //<2F><>Լ<EFBFBD><D4BC>Ϣ<EFBFBD><EFBFBD><E1B9B9>
//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
static UNION_2U8TOU16 temp_data_u16;
static u8 temp_data_u8;
static s16 s_temp_data=0;
static MET_STATE temp_state;
static u8 temp_buf1[16];
static u8 temp_buf2[16];
static u16 temp_data=0;
/***************************************************************
read_oline_time_ack
<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> HEX <EFBFBD>14H <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>Ϊ 20 <EFBFBD>
****************************************************************/
static void read_oline_time_ack(void)
{
g_frame_temp_len_WHYW=0;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_nb_online_keep_time;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
read_meter_time_ack
<EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD>ʵʱʱ<EFBFBD><EFBFBD>
˵<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 7 <EFBFBD>ֽ<EFBFBD> BCD <EFBFBD>
****************************************************************/
static void read_meter_time_ack(void)
{
DateTime tempRtccTime;
RtccGetDateTime(&tempRtccTime); //<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
g_frame_temp_len_WHYW=0;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.second;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.minute;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.hour;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.day;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.month;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = tempRtccTime.s.year;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = 0x20;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
read_upload_time
<EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************/
static void read_upload_time(void)
{
u8 temp_buf[64];
u8 temp_index;
DateTime tempDateTime;
g_frame_temp_len_WHYW = 0;
SystemGetUploadTime(&tempDateTime);//<2F><>ȡ<EFBFBD>ϱ<EFBFBD>ʱ<EFBFBD><CAB1>
for (int i = 0; i < 48; i++)
{
temp_buf[i] = 0xFF;//<2F><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
}
temp_index = BCD2HEX(tempDateTime.s.hour)*2;
temp_buf[temp_index] = BCD2HEX(tempDateTime.s.minute);
for (int i = 0; i < 48; i++)
{
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = temp_buf[i];
}
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
read_interval_time_ack
<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>Ϊ 0x01<EFBFBD><EFBFBD>0x05<EFBFBD><EFBFBD>0x0A<EFBFBD><EFBFBD>0x0F<EFBFBD><EFBFBD>0x14<EFBFBD><EFBFBD>0x1E<EFBFBD><EFBFBD>0x3C <EFBFBD><EFBFBD> 7 <EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(1 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>5 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>10 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>15 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>20 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>30 <EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>60 <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>Ϊ<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>
****************************************************************/
static void read_interval_time_ack(void)
{
g_frame_temp_len_WHYW = 0;
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_nb_acq_interval;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
read_battery_ack
<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
˵<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ 2 <EFBFBD>ֽ<EFBFBD> BCD <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:35H<EFBFBD><EFBFBD>06H <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ѹ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ 6.35V<EFBFBD><EFBFBD>
****************************************************************/
static void read_battery_ack(void)
{
g_frame_temp_len_WHYW = 0;
//<2F>͵<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ֵ
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_battery_pra[0];
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_battery_pra[1];
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_battery_pra[2];
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = whyw_ee.Data.ee_battery_pra[3];
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
read_nb_para_ack
<EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD> NB <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IP <EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֱ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16 <EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD>ٰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD> IP <EFBFBD><EFBFBD>ַΪ<EFBFBD><EFBFBD>
110.25.38.202<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>˳<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>6EH<EFBFBD><EFBFBD>19H<EFBFBD><EFBFBD>26H<EFBFBD><EFBFBD>CAH<EFBFBD><EFBFBD>
<EFBFBD>˿ڵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫת<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16 <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>
5005<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>˳<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>8DH<EFBFBD><EFBFBD>13H<EFBFBD><EFBFBD>
****************************************************************/
static void read_nb_para_ack(void)
{
g_frame_temp_len_WHYW = 0;
for (int i = 0; i < 4; i++)
{
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = Sys_data_object.P2.server_ip[i];
}
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = Sys_data_object.P2.server_port.data_buf[0];
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = Sys_data_object.P2.server_port.data_buf[1];
for(int i=6;i<0x38;i++)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_frame_temp_buf_WHYW[g_frame_temp_len_WHYW++] = 0x30;
}
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
/***************************************************************
write_online_time_ack
дˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//68 10 03 00 08 22 20 33 78 04 04 00 81 11 22 0F 3B 16
˵<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>ͬ
****************************************************************/
static void write_online_time_ack(void)
{
switch(up_deal_stat_WHYW)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_WHYW = 0;
if(*new_message_data_rev_WHYW > 30)
{
whyw_ee.Data.ee_nb_online_keep_time = 30;
}
else
{
whyw_ee.Data.ee_nb_online_keep_time = *new_message_data_rev_WHYW++;
}
EepWrite(&whyw_ee.Data.ee_nb_online_keep_time, EEP_ADDR_WHYW_NB_ONLINE_KEEP, 1, &s_eep_complete_WHYW);//<2F><><EFBFBD><EFBFBD>EE<45><45><EFBFBD><EFBFBD>
up_deal_stat_WHYW = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
}
/***************************************************************
write_upload_time_ack
дˮ<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><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>
68 10 02 00 08 22 20 33 78
44 //ctr
33 00
81 04
39 //ser
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF 0A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>10<31><30>
7F 16
****************************************************************/
static void write_upload_time_ack(void)
{
switch(up_deal_stat_WHYW)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_WHYW = 0;
temp_upload_delay_time = (u32)((Sys_data_object.P1.met_addr[1] & 0x0F)) * 100;
temp_upload_delay_time += (Sys_data_object.P1.met_addr[0] >> 4) * 10 + (Sys_data_object.P1.met_addr[0] & 0x0F); //<2F><><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>0-999
temp_upload_delay_time *= Sys_data_object.P1.report_step_len.datas; //<2F><><EFBFBD><EFBFBD>ɢϵ<C9A2><CFB5>
for(int i=0;i<48;i++)
{
temp_upload_hour_minute_time = *new_message_data_rev_WHYW++;
if(0xFF != temp_upload_hour_minute_time)
{
temp_upload_set_time = (i/2)*3600+temp_upload_hour_minute_time*60;
if(temp_upload_set_time>temp_upload_delay_time)
{
temp_upload_set_time -= temp_upload_delay_time;
}
else
{
temp_upload_set_time = 0;
}
Sys_data_object.P1.Time_upload_2006.s.type = UPLOAD_MODE_DAY;
Sys_data_object.P1.Time_upload_2006.s.hour = HEX2BCD(temp_upload_set_time/3600);
Sys_data_object.P1.Time_upload_2006.s.minute = HEX2BCD((temp_upload_set_time%3600)/60);
EepWrite(&Sys_data_object.P1.Time_upload_2006.buf[0], FRAME_NBIot_FREQVAL, 5, &s_eep_complete_WHYW);//<2F><><EFBFBD><EFBFBD>EE<45><45><EFBFBD><EFBFBD>
Frame_Para_Init();
break;
}
}
up_deal_stat_WHYW = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
}
/***************************************************************
write_interval_time_ack
дˮ<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><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>¡<EFBFBD>
****************************************************************/
static void write_interval_time_ack(void)
{
switch(up_deal_stat_WHYW)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_WHYW = 0;
whyw_ee.Data.ee_nb_acq_interval = *new_message_data_rev_WHYW++;
EepWrite(&whyw_ee.Data.ee_nb_acq_interval, EEP_ADDR_WHYW_STORE_INTERVAL, 1, &s_eep_complete_WHYW);//<2F><><EFBFBD><EFBFBD>EE<45><45><EFBFBD><EFBFBD>
up_deal_stat_WHYW = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
}
/***************************************************************
write_battery_ack
д<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><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>
****************************************************************/
static void write_battery_ack(void)
{
switch(up_deal_stat_WHYW)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
g_frame_temp_len_WHYW = 0;
whyw_ee.Data.ee_battery_pra[0] = *new_message_data_rev_WHYW++;
whyw_ee.Data.ee_battery_pra[1] = *new_message_data_rev_WHYW++;
whyw_ee.Data.ee_battery_pra[2] = *new_message_data_rev_WHYW++;
whyw_ee.Data.ee_battery_pra[3] = *new_message_data_rev_WHYW++;
EepWrite(whyw_ee.Data.ee_battery_pra, EEP_ADDR_WHYW_BATTERY_PRA, 4, &s_eep_complete_WHYW);//<2F><><EFBFBD><EFBFBD>EE<45><45><EFBFBD><EFBFBD>
up_deal_stat_WHYW = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
}
/***************************************************************
write_nb_para_ack
дˮ<EFBFBD><EFBFBD> NB <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> NB <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(IP <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>
****************************************************************/
static void write_nb_para_ack(void)
{
switch(up_deal_stat_WHYW)
{
case UP_DEAL_S0:
{
if(TASK_IDLE == EepIfIdle())
{
g_frame_temp_len_WHYW = 0;
for (int i = 0; i < 4; i++)
{
Sys_data_object.P2.server_ip[i] = *(new_message_data_rev_WHYW +i);
}
Sys_data_object.P2.server_port.data_buf[0] = *(new_message_data_rev_WHYW +4);
Sys_data_object.P2.server_port.data_buf[1] = *(new_message_data_rev_WHYW +5);
EepWrite(&Sys_data_object.P2.server_ip[0], EEP_UPDATE_UDP_IP, 6, &s_eep_complete_WHYW);//<2F><><EFBFBD>浽UDP IP
up_deal_stat_WHYW = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
}
/***************************************************************
upload_ack
<EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><EFBFBD>֡
˵<EFBFBD><EFBFBD>:NB <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><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>Ϊ 01H<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>Ϊ 41H(D6 Ϊ<EFBFBD><EFBFBD>1<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>κ<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>(D6 Ϊ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
//68 10 02 00 08 22 20 33 78 01 07 00 90 20 14 01 00 01 00 3D 16
****************************************************************/
static void upload_ack(void)
{
if(frame_struct_WHYW.serial_num == upload_serial_num_sy)//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>к<EFBFBD>
{
FrameSetMsgApp(MsgNbUplaod_AckOk);
}
g_frame_temp_len_WHYW = 0;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
/****************************************************************************************************/
//<2F><>ַ<EFBFBD>ж<EFBFBD>
static u8 check_met_addr_WHYW(u8 * p_buf)
{
u8 tmp_i = 0;
u8 tmp_arry[8];
for (tmp_i = 0; tmp_i < 8; tmp_i++)
{
tmp_arry[tmp_i] = *(p_buf + tmp_i + 1);
}
for (tmp_i = 1; tmp_i < 8; tmp_i++)
{
if ((tmp_arry[tmp_i] != Sys_data_object.P1.met_addr[tmp_i - 1]) && (tmp_arry[tmp_i] != 0xAA))
{
return ERROR_IES;
}
}
return SUCCESS_IES;
}
//<2F><><EFBFBD><EFBFBD>Լ
u8 crack_frame_WHYW(u16 frame_lenth, u8 *frame_buffer)
{
u16 i;
u16 j;
u16 endloc = 0;
u16 framelen = 0;
if(*(frame_buffer + 10) != 1)
{
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 == *frame_buffer) //<2F>ҵ<EFBFBD>֡ͷ
{
frame_struct_WHYW.head_site = i; //<2F><>¼֡ͷ
if (ERROR_IES == check_met_addr_WHYW(frame_buffer)) //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>0
{
return (ERROR_IES);
}
frame_struct_WHYW.len.to_uint8[0] = *(frame_buffer + 10); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
frame_struct_WHYW.len.to_uint8[1] = *(frame_buffer + 11); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
framelen = frame_struct_WHYW.len.to_uint16 + 14; //֡<><D6A1><EFBFBD><EFBFBD>
if (frame_struct_WHYW.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_TAIL == frame_buffer[endloc]) && (endloc <= frame_lenth)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>Ч
{
frame_struct_WHYW.chkval = 0;
for (j = 0; j < (framelen - 2); j++)
{
frame_struct_WHYW.chkval = frame_struct_WHYW.chkval + frame_buffer[j]; //<2F><>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
}
frame_struct_WHYW.chkval &= 0x00ff;
if (frame_struct_WHYW.chkval == frame_buffer[endloc - 1])
{
frame_struct_WHYW.frame_ctrl = *(frame_buffer + 9); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
frame_struct_WHYW.mark_DI0 = *(frame_buffer + 12);
frame_struct_WHYW.mark_DI1 = *(frame_buffer + 13);
frame_struct_WHYW.serial_num = *(frame_buffer + 14);
//68 10 03 00 08 22 20 33 78 04 04 00 81 11 22 0F 3B 16
new_message_data_rev_WHYW = frame_buffer + frame_struct_WHYW.head_site + 15;
FrameSetMsgApp(MsgNb_FlagRcvNbFrame); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϣ
return (SUCCESS_IES);
}//end if
}
}//end <20><>֡ͷ<D6A1><CDB7>if
frame_buffer++;
}//end for()
return (ERROR_IES);
}
return ERROR_IES;
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
static u8 whyw_deal_ctrl=0;
static u8 whyw_online_wait_flag=0;
u8 up_deal_code_WHYW(void)
{
task_complete_WHYW = PTL_PACK_BUSY;
whyw_deal_ctrl = (frame_struct_WHYW.frame_ctrl&0xBF);//ȥ<><C8A5>D6<44><36>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD>ߵȴ<DFB5>λ<EFBFBD><CEBB>
if(frame_struct_WHYW.frame_ctrl&0x40)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ߵȴ<DFB5>
{
whyw_online_wait_flag = 1;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
}
else
{
whyw_online_wait_flag = 2;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
}
switch(whyw_deal_ctrl)
{
case READ_CTRL_DOWN:
{
//<2F><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
if((frame_struct_WHYW.mark_DI0 == RW_ONLINE_TIME_D0)&&(frame_struct_WHYW.mark_DI1 == RW_ONLINE_TIME_D1))
{
read_oline_time_ack();
}
//<2F><>ˮ<EFBFBD><CBAE>ʵʱʱ<CAB1><CAB1>
else if((frame_struct_WHYW.mark_DI0 == RW_METER_TIME_D0)&&(frame_struct_WHYW.mark_DI1 == RW_METER_TIME_D1))
{
read_meter_time_ack();
}
//<2F><>ˮ<EFBFBD><CBAE><EFBFBD>Զ<EFBFBD><D4B6>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_UPLOAD_TIME_ID0)&&(frame_struct_WHYW.mark_DI1 == RW_UPLOAD_TIME_ID1))
{
read_upload_time();
}
//<2F><>ȡˮ<C8A1><CBAE><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_INTERVAL_TIME_ID0)&&(frame_struct_WHYW.mark_DI1 == RW_INTERVAL_TIME_ID1))
{
read_interval_time_ack();
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_BATTERY_D0)&&(frame_struct_WHYW.mark_DI1 == RW_BATTERY_D1))
{
read_battery_ack();
}
//<2F><>ˮ<EFBFBD><CBAE> NB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_NB_PARA_D0)&&(frame_struct_WHYW.mark_DI1 == RW_NB_PARA_D1))
{
read_nb_para_ack();
}
//ˮ<><CBAE><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>֡
else if((frame_struct_WHYW.mark_DI0 == UPLOAD_DATA_D0)&&(frame_struct_WHYW.mark_DI1 == UPLOAD_DATA_D1))
{
upload_ack();
}
else
{
g_frame_temp_len_WHYW = 0;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
frame_struct_WHYW.ack_ctrl = READ_CTRL_UP;
}
break;
case WRITE_CTRL_DOWN:
{
//дˮ<D0B4><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1>
if((frame_struct_WHYW.mark_DI0 == RW_ONLINE_TIME_D0)&&(frame_struct_WHYW.mark_DI1 == RW_ONLINE_TIME_D1))
{
write_online_time_ack();
}
//дˮ<D0B4><CBAE>ʵʱʱ<CAB1><CAB1>
else if((frame_struct_WHYW.mark_DI0 == RW_METER_TIME_D0)&&(frame_struct_WHYW.mark_DI1 == RW_METER_TIME_D1))
{
task_complete_WHYW = PTL_PACK_FAIL;
}
//дˮ<D0B4><CBAE><EFBFBD>Զ<EFBFBD><D4B6>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_UPLOAD_TIME_ID0)&&(frame_struct_WHYW.mark_DI1 == RW_UPLOAD_TIME_ID1))
{
write_upload_time_ack();
}
//дˮ<D0B4><CBAE><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_INTERVAL_TIME_ID0)&&(frame_struct_WHYW.mark_DI1 == RW_INTERVAL_TIME_ID1))
{
write_interval_time_ack();
}
//д<><D0B4><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_BATTERY_D0)&&(frame_struct_WHYW.mark_DI1 == RW_BATTERY_D1))
{
write_battery_ack();
}
//дˮ<D0B4><CBAE> NB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if((frame_struct_WHYW.mark_DI0 == RW_NB_PARA_D0)&&(frame_struct_WHYW.mark_DI1 == RW_NB_PARA_D1))
{
write_nb_para_ack();
}
else
{
g_frame_temp_len_WHYW = 0;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
frame_struct_WHYW.ack_ctrl = WRITE_CTRL_UP;
}
break;
default:
{
g_frame_temp_len_WHYW = 0;
up_deal_stat_WHYW = UP_DEAL_S0;
task_complete_WHYW = PTL_PACK_FAIL;
}
break;
}
return task_complete_WHYW;
}
void Frame_ResetDealState_WHYW(void)
{
up_deal_stat_WHYW = UP_DEAL_S0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
static void Frame_ack_WHYWBase(STRUCT_FRAME_WHYW temp_struct, u8* p_temp_buf, u16 p_temp_len, u8* p_send_buf, u16* p_send_len)
{
u16 i = 0;
u8 temp_cs;
u8* p_send_buf_start;
u8* p_send_buf_end;
u16 temp_len;
p_send_buf_start = p_send_buf;
p_send_buf_end = p_send_buf;
*p_send_buf_end++ = FRAME_HEAD_MARK;
*p_send_buf_end++ = W_METTYPE;
for (i = 0; i < 7; i++)
{
*p_send_buf_end++ = Sys_data_object.P1.met_addr[i]; //<2F><><EFBFBD><EFBFBD>ַ
}
*p_send_buf_end++ = temp_struct.ack_ctrl;
*p_send_buf_end++ = (p_temp_len+3)&0xFF; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD>di0<69><30>di1<69><31>ser
*p_send_buf_end++ = ((p_temp_len+3)>>8)&0xFF;
*p_send_buf_end++ = temp_struct.mark_DI0;
*p_send_buf_end++ = temp_struct.mark_DI1;
*p_send_buf_end++ = temp_struct.serial_num;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i = 0; i < p_temp_len; i++)
{
*p_send_buf_end++ = *(p_temp_buf + i);
}
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
temp_len = (p_send_buf_end - p_send_buf_start);
for(i = 0; i < temp_len; i++)
{
temp_cs += *p_send_buf_start;
p_send_buf_start++;
}
*p_send_buf_end++ = temp_cs;
*p_send_buf_end++ = FRAME_END_MARK;
*p_send_len = (temp_len+2);
}
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void Frame_ack_WHYW(u8* p_send_buf, u16* p_send_len)
{
Frame_ack_WHYWBase(frame_struct_WHYW, g_frame_temp_buf_WHYW, g_frame_temp_len_WHYW, p_send_buf, p_send_len);
}
/****************************************************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4><EFBFBD>*********************************************/
//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
void Frame_upload_WHYW(u8* p_send_buf, u16* p_send_len)
{
upload_struct_WHYW.ack_ctrl = READ_CTRL_UP;
upload_struct_WHYW.mark_DI0 = UPLOAD_DATA_D0;
upload_struct_WHYW.mark_DI1 = UPLOAD_DATA_D1;
upload_serial_num_sy++;//<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
upload_struct_WHYW.serial_num = upload_serial_num_sy;
Frame_ack_WHYWBase(upload_struct_WHYW, g_upload_temp_buf_WHYW, g_upload_temp_len_WHYW, p_send_buf, p_send_len);
}
//UDP<44>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>֡
void Upload_FrameData(void)
{
g_upload_temp_len_WHYW = 0;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_packet_count&0xFF; //<2F><>֡<EFBFBD><D6A1>L
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = (upload_packet_count>>8)&0xFF; //<2F><>֡<EFBFBD><D6A1>H
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_packet_code&0xFF; //<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>L
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = (upload_packet_code>>8)&0xFF; //<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>H
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_packet_data_count; //<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
/***<2A><>EE<45><45>ȡ***/
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_rtcc_start.s.minute; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD><CAB1>-<2D><>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_rtcc_start.s.hour; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD><CAB1>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_rtcc_start.s.day; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD><CAB1>-<2D><>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_rtcc_start.s.month; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD><CAB1>-<2D><>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_rtcc_start.s.year; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD><CAB1>-<2D><>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 30 ; //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
//<2F><>ǰ<EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>(4 <20>ֽ<EFBFBD> BCD <20><>) :50H<30><48>56H<36><48>34H<34><48>12H <20><>ʾ<EFBFBD><CABE>ǰ<EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD>Ϊ 123456.50 m3
for(int i=0;i<upload_packet_data_count;i++)
{
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_buf[4*i+0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_buf[4*i+1];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_buf[4*i+2];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = upload_circle_buf[4*i+3];
}
//35H<35><48>06H <20><>ʾ<EFBFBD><CABE>ѹֵΪ 6.35V<EFBFBD><EFBFBD>
temp_data_u16.datas = HexToBcd16(PowerCheckValueSys());
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[0];//<2F><><EFBFBD>ص<EFBFBD>ѹL
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[1];//<2F><><EFBFBD>ص<EFBFBD>ѹH
//CSQ BCD<43><44>ʽ
NbiotGetCSQ(&temp_data_u8);
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = HEX2BCD(temp_data_u8);//sys_get_single.to_uint8[0];
//<2F><>ȡRSRP hex 2 <20>ֽ<EFBFBD>,<2C><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D0-D14 <20><>ʾ<EFBFBD><CABE><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>7BH<42><48>80H <20><>ʾ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>ֵΪ-123dBm<42><6D>
NbiotGetRSRP(&s_temp_data);
temp_data_u16.datas = -(s_temp_data/10);
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[1]|0x80;
//<2F><>ȡSNR hex 19H<39><48>00H <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 25dB<64><42>
NbiotGetSNR(&s_temp_data);
if(s_temp_data<0)
{
temp_data_u16.datas = (-s_temp_data/10)|0x8000;
}
else
{
temp_data_u16.datas = s_temp_data/10;
}
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[1];
//<2F><>ȡECL
NbiotGetECL(&s_temp_data);
temp_data_u16.datas = s_temp_data;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[0];
//PCI 2 <20>ֽ<EFBFBD> BCD <20><EFBFBD><EBA3AC>λ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ<EFBFBD><C7B0>05H<35><48>04H <20><> ʾ PCI <20><><EFBFBD><EFBFBD>Ϊ 504<30><34>
NbiotGetPCI(&temp_data);
temp_data_u16.datas = temp_data;
temp_data_u16.datas = HexToBcd16(temp_data_u16.datas);
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u16.data_buf[1];
//IMEI <20><>: 08H<38><48>23H<33><48>25H<35><48>89H<39><48>67H<37><48>31H<31><48>09H<39><48>60H <20><>ʾ NB ģ<><C4A3><EFBFBD><EFBFBD> IMEI <20><>Ϊ 823258967310960<36><30>
NbiotGetIMEI((char*)temp_buf1);
temp_buf2[0] = temp_buf1[0] - 0x30;
for(int 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(int i = 0; i < 8; i++)
{
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_buf2[i];;
}
//IMSI <20><>: 09H<39><48>12H<32><48>34H<34><48>79H<39><48>68H<38><48>56H<36><48>07H<37><48>80H <20><>ʾ SIM <20><><EFBFBD><EFBFBD> IMSI <20><>Ϊ 912347968560780
NbiotGetIMSI((char*)temp_buf1);
temp_buf2[0] = temp_buf1[0] - 0x30;
for(int 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(int i = 0; i < 8; i++)
{
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_buf2[i];
}
//<2F><><EFBFBD>߳ɹ<DFB3><>ܴ<EFBFBD><DCB4><EFBFBD>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = whyw_ee.Data.ee_upload_count_success.data_buf[0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = whyw_ee.Data.ee_upload_count_success.data_buf[1];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = whyw_ee.Data.ee_upload_count_fail.data_buf[0];
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = whyw_ee.Data.ee_upload_count_fail.data_buf[1];
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DateTime sys_rtcc_time;
RtccGetDateTime(&sys_rtcc_time);
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.second;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.minute;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.hour;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.day;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.month;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = sys_rtcc_time.s.year;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 0x20;
//״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
temp_data_u8 = 0;
if(UPLOAD_TYPE_FIX_TIME == GetEventUploadType()|| (UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType()))//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
temp_data_u8 &=~ 0x80;//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
}
else
{
temp_data_u8 |= 0x80;//<2F><><EFBFBD><EFBFBD>
}
temp_state = FrameGetByte();
if(temp_state.stat1bits.low_battery_voltage)
{
temp_data_u8 |= 0x04;//<2F><><EFBFBD><EFBFBD>Ƿѹ
}
else
{
temp_data_u8 &=~0x04;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
temp_data_u8 &=~ 0x02;//<2F><><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9>ϱ<EFBFBD>־
if(temp_state.stat1bits.valve_state==0)
{
temp_data_u8 &=~ 0x01;//<2F><><EFBFBD><EFBFBD>
}
else if(temp_state.stat1bits.valve_state==1)
{
temp_data_u8 |= 0x01;//<2F>ط<EFBFBD>
}
else
{
temp_data_u8 |= 0x02;//<2F><><EFBFBD><EFBFBD>
}
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = temp_data_u8;//state0;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 0x03;//state1; 03H:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 3;//warning0;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 4;//warning1;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 5;//warning2;
//Ӳ<><D3B2><EFBFBD>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = HARDWARE_VERSION_USED;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = (PROGRAME_VERSION>>16)&0xFF;
g_upload_temp_buf_WHYW[g_upload_temp_len_WHYW++] = (PROGRAME_VERSION>>24)&0xFF;
}
/********************************************************************************
GetCircleDateTimeStart
˵ <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>
********************************************************************************/
u8 GetCircleDateTimeStart(DateTime* startTime, DateTime endTime, u32 dataCnt, u8 intervalTime)
{
struct tm tmdt;
struct tm *ldt;
time_t ctt;
tmdt.tm_year = (endTime.s.year >> 4) * 10 + (endTime.s.year & 0x0F) + 100;
tmdt.tm_mon = (endTime.s.month >> 4) * 10 + (endTime.s.month & 0x0F) - 1;
tmdt.tm_mday = (endTime.s.day >> 4) * 10 + (endTime.s.day & 0x0F);
tmdt.tm_hour = (endTime.s.hour >> 4) * 10 + (endTime.s.hour & 0x0F);
tmdt.tm_min = (endTime.s.minute >> 4) * 10 + (endTime.s.minute & 0x0F);
tmdt.tm_sec = (endTime.s.second >> 4) * 10 + (endTime.s.second & 0x0F);
tmdt.tm_isdst = 0;
ctt = mktime(&tmdt);
ctt -= (dataCnt*intervalTime*60);
ldt = localtime(&ctt);
startTime->s.year = ((*ldt).tm_year - 100) / 10 * 16 + ((*ldt).tm_year - 100) % 10;
startTime->s.month = ((*ldt).tm_mon + 1) / 10 * 16 + ((*ldt).tm_mon + 1) % 10;
startTime->s.day = ((*ldt).tm_mday) / 10 * 16 + ((*ldt).tm_mday) % 10;
startTime->s.weekday = ((*ldt).tm_wday) / 10 * 16 + ((*ldt).tm_wday) % 10;
startTime->s.hour = ((*ldt).tm_hour) / 10 * 16 + ((*ldt).tm_hour) % 10;
startTime->s.minute = ((*ldt).tm_min) / 10 * 16 + ((*ldt).tm_min) % 10;
startTime->s.second = ((*ldt).tm_sec) / 10 * 16 + ((*ldt).tm_sec) % 10;
return Rtcc_Check_DateTime(startTime);
}
void GetUploadDataResetState_WHYW(void)
{
upload_frame_stat_whyw =WHYW_STATE_S0;
task_upload_complete_whyw = PTL_PACK_BUSY;
}
u8 GetUploadDataCheckIdle_WHYW(void)
{
if(WHYW_STATE_S0 == upload_frame_stat_whyw)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
u8 GetUploadDataCheckTask_WHYW(void)
{
return task_upload_complete_whyw;
}
int GetUploadDataCount(void)
{
if (whyw_ee.Data.u_circle_store_index_w.datas >= whyw_ee.Data.u_circle_store_index_r.datas)
return (whyw_ee.Data.u_circle_store_index_w.datas - whyw_ee.Data.u_circle_store_index_r.datas);
else
return (whyw_ee.Data.u_circle_store_index_w.datas + STORE_DATA_COUNT_CIRCLE - whyw_ee.Data.u_circle_store_index_r.datas);
}
void GetUploadDataMachine_WHYW(u8 data_step, u8* p_send_buf, u16* p_send_len)
{
switch(upload_frame_stat_whyw)
{
case WHYW_STATE_S0:
{
if(data_step == UPLOAD_FRAME_REQUEST_NEW)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
{
whyw_online_wait_flag=0;//<2F><><EFBFBD>ߵȴ<DFB5><C8B4><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
temp_upload_step = 0;
upload_frame_retry_times = 0;
upload_count_flag = 0;
upload_frame_stat_whyw = WHYW_STATE_S1;
}
else if(data_step == UPLOAD_FRAME_UPLOAD_OK)//<2F><><EFBFBD>ͳɹ<CDB3>
{
if(upload_count_flag == 0)//<2F><>¼һ<C2BC><D2BB><EFBFBD>ϱ<EFBFBD><CFB1>ɹ<EFBFBD>
{
upload_count_flag = 1;
whyw_ee.Data.ee_upload_count_success.datas++;//<2F>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9>ܴ<EFBFBD><DCB4><EFBFBD>
}
if(temp_upload_step == WHYW_STATE_S10)//<2F><><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݷ<EFBFBD><DDB7>ͳɹ<CDB3>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S13;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
else if(temp_upload_step == WHYW_STATE_S20)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳɹ<CDB3>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S5;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
}
upload_frame_retry_times = 0;
SystemClearUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD>0
}
else if(data_step == UPLOAD_FRAME_UPLOAD_RETRY)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>
{
if(temp_upload_step == WHYW_STATE_S10)//<2F><><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ط<EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S4;
}
else if(temp_upload_step == WHYW_STATE_S20)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ط<EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S4;
}
else
{
task_upload_complete_whyw = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_whyw = WHYW_STATE_S0;
}
}
else if(data_step == UPLOAD_FRAME_ONLINE_FAIL) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
if(UPLOAD_TYPE_FIX_TIME == GetEventUploadType()||
(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType()))//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
whyw_ee.Data.ee_upload_count_fail.datas++;//ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
else
{
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
}
break;
case WHYW_STATE_S1://<2F><>ȡ<EFBFBD><C8A1>¼ʱ<C2BC><CAB1>
{
if(TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_WHYW_LAST_RTCC, &upload_circle_rtcc_end.b[0], 7, &s_eep_complete_WHYW);
upload_frame_stat_whyw = WHYW_STATE_S2;
}
}
break;
case WHYW_STATE_S2://<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
upload_data_count = GetUploadDataCount();
if(upload_data_count > 0)
{
upload_packet_count = (upload_data_count/UPLOAD_CIRCLE_MAX_COUNT)+1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>
upload_packet_code = 0;//֡<><D6A1><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
upload_frame_stat_whyw = WHYW_STATE_S10;
}
else//<2F><>û<EFBFBD>м<EFBFBD>¼,<2C>ϱ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S20;
}
}
}
break;
/*>>>>>>>>>>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>¼<EFBFBD>Ķ<EFBFBD>ȡ>>>>>>>>>>>>>>*/
case WHYW_STATE_S10://<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
temp_upload_step = WHYW_STATE_S10;
upload_data_count = GetUploadDataCount();
if(upload_data_count >0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
{
if((upload_data_count/UPLOAD_CIRCLE_MAX_COUNT)>0)
{
upload_packet_data_count = UPLOAD_CIRCLE_MAX_COUNT;
}
else
{
upload_packet_data_count = (upload_data_count%UPLOAD_CIRCLE_MAX_COUNT);
}
if((whyw_ee.Data.u_circle_store_index_r.datas + upload_packet_data_count) < STORE_DATA_COUNT_CIRCLE)//û<>г<EFBFBD><D0B3><EFBFBD><EFBFBD>߽<EFBFBD>,<2C><>һ<EFBFBD><D2BB>
{
uTemp_ee_addr = EEP_ADDR_WHYW_STORE_CIRCLE + whyw_ee.Data.u_circle_store_index_r.datas*4;
uTemp_read_len = upload_packet_data_count*STORE_DATA_SIZE_CIRCLE;
EepRead(uTemp_ee_addr, &upload_circle_buf[0], uTemp_read_len, &s_eep_complete_WHYW);
upload_frame_stat_whyw = WHYW_STATE_S12;
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uTemp_ee_addr = EEP_ADDR_WHYW_STORE_CIRCLE + whyw_ee.Data.u_circle_store_index_r.datas*4;
uTemp_read_len = (whyw_ee.Data.u_circle_store_index_r.datas + upload_packet_data_count - STORE_DATA_COUNT_CIRCLE)*STORE_DATA_SIZE_CIRCLE;
EepRead(uTemp_ee_addr, &upload_circle_buf[0], uTemp_read_len, &s_eep_complete_WHYW);
upload_frame_stat_whyw = WHYW_STATE_S11;
}
}
else//û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD>
{
upload_frame_stat_whyw = WHYW_STATE_S5;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
}
}
}
break;
case WHYW_STATE_S11://<2F>ȴ<EFBFBD><C8B4><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>1
{
if(TASK_IDLE == EepIfIdle())
{
uTemp_ee_addr = EEP_ADDR_WHYW_STORE_CIRCLE;
EepRead(uTemp_ee_addr, &upload_circle_buf[uTemp_read_len], (upload_packet_data_count - uTemp_read_len), &s_eep_complete_WHYW);
upload_frame_stat_whyw = WHYW_STATE_S12;
}
}
break;
case WHYW_STATE_S12://<2F>ȴ<EFBFBD><C8B4><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>2
{
if(TASK_IDLE == EepIfIdle())
{
upload_packet_code++;//֡<><D6A1><EFBFBD><EFBFBD>
if(ERROR == GetCircleDateTimeStart(&upload_circle_rtcc_start, upload_circle_rtcc_end, (upload_data_count-1), 30))//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ,<2C><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>дָ<D0B4><D6B8>,<2C>ϱ<EFBFBD><CFB1><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
whyw_ee.Data.u_circle_store_index_w.datas = 0;
whyw_ee.Data.u_circle_store_index_r.datas = 0;
upload_frame_stat_whyw = WHYW_STATE_S20;
}
else
{
upload_frame_stat_whyw = WHYW_STATE_S3;
}
}
}
break;
case WHYW_STATE_S13://<2F><EFBFBD><E6B4A2>ָ<EFBFBD><D6B8>,<2C>յ<EFBFBD><D5B5>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
whyw_ee.Data.u_circle_store_index_r.datas += upload_packet_data_count;
whyw_ee.Data.u_circle_store_index_r.datas %= STORE_DATA_COUNT_CIRCLE;//Խ<><D4BD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC>ü<EFBFBD><C3BC><EFBFBD>
EepWrite(whyw_ee.Data.u_circle_store_index_r.data_buf, EEP_ADDR_WHYW_CIRCLE_INDEX_R, 2, &s_eep_complete_WHYW);
upload_frame_stat_whyw = WHYW_STATE_S10;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
break;
/*>>>>>>>>>>><3E><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>>>>>>>>>>>>>>>*/
case WHYW_STATE_S20://<2F>ϱ<EFBFBD><CFB1><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
temp_upload_step = WHYW_STATE_S20;
upload_packet_count = 1;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡<EFBFBD><D6A1>
upload_packet_code = 1;//<2F><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
upload_packet_data_count = 1;//<2F><>֡<EFBFBD><D6A1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
temp_CircleData = (u32)(temp_float_data.gp22_float);
temp_bcd_CircleData.datas = HexToBcd32(temp_CircleData);
for(int i=0;i<4;i++)
{
upload_circle_buf[i] = temp_bcd_CircleData.data_buf[i];
}
RtccGetDateTime(&upload_circle_rtcc_start);//<2F><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>ʱ<EFBFBD>
upload_frame_stat_whyw = WHYW_STATE_S3;
}
break;
/*>>>>>>>>>>><3E><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>֡>>>>>>>>>>>>>>*/
case WHYW_STATE_S3://<2F><><EFBFBD>ϴ<EFBFBD>֡
{
Upload_FrameData();
Frame_upload_WHYW(p_send_buf,p_send_len);
task_upload_complete_whyw = PTL_PACK_SUCCESS;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
break;
/*>>>>>>>>>>><3E><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ʧ<EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD>>>>>>>>>>>>>>>*/
case WHYW_STATE_S4://<2F><><EFBFBD><EFBFBD>
{
if(upload_frame_retry_times < 2)
{
upload_frame_retry_times++;
upload_frame_stat_whyw = WHYW_STATE_S3;
}
else//<2F><><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʧ<EFBFBD><CAA7>2<EFBFBD>εĴ<CEB5><C4B4><EFBFBD>
{
if((UPLOAD_TYPE_FIX_TIME == GetEventUploadType())|| //<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType()))//<2F>ش<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
whyw_ee.Data.ee_upload_count_fail.datas++;//ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
}
break;
/*>>>>>>>>>>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>>>>>>>>>>>>>>>*/
case WHYW_STATE_S5://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
if(whyw_online_wait_flag == 1)//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>ߵȴ<DFB5>
{
whyw_online_wait_flag = 0;
if(whyw_ee.Data.ee_nb_online_keep_time>30)
{
whyw_ee.Data.ee_nb_online_keep_time = 15;
}
Set100msTimer(TIMER_100MS_UPLOAD_MONITOR, 10*whyw_ee.Data.ee_nb_online_keep_time);
upload_frame_stat_whyw = WHYW_STATE_S6;
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
{
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
}
break;
case WHYW_STATE_S6://<2F>ȴ<EFBFBD>ʱ<EFBFBD>
{
if(whyw_online_wait_flag == 1)//<2F><><EFBFBD>¼<EFBFBD>ʱ
{
whyw_online_wait_flag = 0;
if(whyw_ee.Data.ee_nb_online_keep_time>30)
{
whyw_ee.Data.ee_nb_online_keep_time = 15;
}
Set100msTimer(TIMER_100MS_UPLOAD_MONITOR, 10*whyw_ee.Data.ee_nb_online_keep_time);
}
else if(whyw_online_wait_flag == 2)//<2F>ȴ<EFBFBD><C8B4>ڼ<EFBFBD><DABC>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
whyw_online_wait_flag = 0;
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
if(0 == Check100msTimer(TIMER_100MS_UPLOAD_MONITOR))
{
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
}
break;
default:
{
task_upload_complete_whyw = PTL_PACK_FAIL;
upload_frame_stat_whyw = WHYW_STATE_S0;
}
break;
}
}
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;
temp_fail_times = GetUploadDataCount();
return temp_fail_times;
}
default:
break;
}
return 0;
}
/*************************************************************<2A><><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>************/
static void WHYW_Store_InitApp(void)
{
TYP_STATE_WHYW tmp_init_stat;
if(Sys_data_object.P3.FirstPowerOnFlag == FIRST_POWER_ON_FLAG)
{
tmp_init_stat = WHYW_STATE_S10;
}
else
{
tmp_init_stat = WHYW_STATE_S20;
}
while (tmp_init_stat != WHYW_STATE_S0)
{
switch (tmp_init_stat)
{
case WHYW_STATE_S0:
{
}
break;
//<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
case WHYW_STATE_S10:
{
if(TASK_IDLE == EepIfIdle())
{
whyw_ee.Data.u_circle_store_index_w.datas = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>λ<EFBFBD><CEBB>
whyw_ee.Data.u_circle_store_index_r.datas = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB>
RtccGetDateTime(&whyw_ee.Data.store_circle_rtcc_end);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʱ<EFBFBD><CAB1>7<EFBFBD>ֽ<EFBFBD>
whyw_ee.Data.ee_nb_online_keep_time = 10;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> 1<>ֽ<EFBFBD> 10s
whyw_ee.Data.ee_nb_acq_interval = 30;//<2F><><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1<>ֽ<EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
whyw_ee.Data.ee_battery_pra[0]=0x00;//<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
whyw_ee.Data.ee_battery_pra[1]=0x03;
whyw_ee.Data.ee_battery_pra[2]=0x00;
whyw_ee.Data.ee_battery_pra[3]=0x03;
whyw_ee.Data.ee_upload_count_success.datas =0;//<2F>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9>ܴ<EFBFBD><DCB4><EFBFBD>
whyw_ee.Data.ee_upload_count_fail.datas = 0;//<2F>ϱ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
EepWrite(&whyw_ee.data_buf[0], EEP_ADDR_WHYW_CIRCLE_INDEX_W, EE_PRA_SIZE_WHYW, &s_eep_complete_WHYW);
tmp_init_stat = WHYW_STATE_S1;
}
}
break;
//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
case WHYW_STATE_S20:
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_ADDR_WHYW_CIRCLE_INDEX_W, &whyw_ee.data_buf[0], EE_PRA_SIZE_WHYW, &s_eep_complete_WHYW);
tmp_init_stat = WHYW_STATE_S21;
}
}
break;
case WHYW_STATE_S21:
{
if (TASK_IDLE == EepIfIdle())
{
if((u_circle_store_index_w.datas>=STORE_DATA_COUNT_CIRCLE)||(u_circle_store_index_r.datas>=STORE_DATA_COUNT_CIRCLE))
{
whyw_ee.Data.u_circle_store_index_w.datas = 0;
whyw_ee.Data.u_circle_store_index_r.datas = 0;
RtccGetDateTime(&whyw_ee.Data.store_circle_rtcc_end);
EepWrite(&whyw_ee.data_buf[0], EEP_ADDR_WHYW_CIRCLE_INDEX_W, EE_PRA_SIZE_WHYW, &s_eep_complete_WHYW);
}
tmp_init_stat = WHYW_STATE_S1;
}
}
break;
case WHYW_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
tmp_init_stat = WHYW_STATE_S0;
}
}
break;
default:
{
tmp_init_stat = WHYW_STATE_S0;
break;
}
}
EepMachineDriver();
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢״̬<D7B4><CCAC>
static void WHYWStore_Machine(void)
{
switch(step_circle_data_store)
{
case WHYW_STATE_S0:
{
if (RtccCheckMsgApp(RtccMsg_OtherProtl))
{
RtccClearMsgApp(RtccMsg_OtherProtl);
RtccGetDateTime(&whyw_protl_rtcc_time);
if((whyw_protl_rtcc_time.s.minute==0x00)||(whyw_protl_rtcc_time.s.minute==0x30))//<2F><>Сʱ
{
FrameSetMsgApp(MsgShenYang_CircleSave);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
}
}
if(FrameCheckMsgApp(MsgShenYang_CircleSave))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>Ϣ
{
FrameClearMsgApp(MsgShenYang_CircleSave);
step_circle_data_store = WHYW_STATE_S1;
}
else if(FrameCheckMsgApp(Msg_ClearHisOther))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameClearMsgApp(Msg_ClearHisOther);
step_circle_data_store = WHYW_STATE_S10;
}
}
break;
case WHYW_STATE_S1://<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
temp_float_data.gp22_u32 = Gp30CheckDataApp(2);
temp_CircleData = (u32)(temp_float_data.gp22_float);
temp_bcd_CircleData.datas = HexToBcd32(temp_CircleData);
if(whyw_ee.Data.u_circle_store_index_w.datas >= STORE_DATA_COUNT_CIRCLE)
{
whyw_ee.Data.u_circle_store_index_w.datas = 0;
}
uTemp_ee_addr = EEP_ADDR_WHYW_STORE_CIRCLE + whyw_ee.Data.u_circle_store_index_w.datas*STORE_DATA_SIZE_CIRCLE;
EepWrite(temp_bcd_CircleData.data_buf, uTemp_ee_addr, STORE_DATA_SIZE_CIRCLE, &s_eep_complete_WHYW);
step_circle_data_store = WHYW_STATE_S2;
}
}
break;
case WHYW_STATE_S2: //<2F>洢ָ<E6B4A2><D6B8>
{
if(TASK_IDLE == EepIfIdle())
{
whyw_ee.Data.u_circle_store_index_w.datas++;
if(whyw_ee.Data.u_circle_store_index_w.datas >= STORE_DATA_COUNT_CIRCLE)
{
whyw_ee.Data.u_circle_store_index_w.datas = 0;
}
EepWrite(whyw_ee.Data.u_circle_store_index_w.data_buf, EEP_ADDR_WHYW_CIRCLE_INDEX_W, 2, &s_eep_complete_WHYW);
step_circle_data_store = WHYW_STATE_S3;
}
}
break;
case WHYW_STATE_S3: //<2F>洢ʱ<E6B4A2><CAB1>
{
if(TASK_IDLE == EepIfIdle())
{
RtccGetDateTime(&whyw_ee.Data.store_circle_rtcc_end);
EepWrite(&whyw_ee.Data.store_circle_rtcc_end.b[0], EEP_ADDR_WHYW_LAST_RTCC, 7, &s_eep_complete_WHYW);
step_circle_data_store = WHYW_STATE_S4;
}
}
break;
case WHYW_STATE_S4: //<2F><EFBFBD>ɹ<EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
whyw_ee.Data.ee_upload_count_fail.datas++;//ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
EepWrite(&whyw_ee.Data.ee_upload_count_success.data_buf[0], EEP_ADDR_WHYW_UPLOAD_SUCCESS, 4, &s_eep_complete_WHYW);
step_circle_data_store = WHYW_STATE_S5;
}
}
break;
case WHYW_STATE_S5: //<2F>ȴ<EFBFBD><C8B4><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
{
if(TASK_IDLE == EepIfIdle())
{
//RtccAdjustDateTime(1,1800-10);//debug
step_circle_data_store = WHYW_STATE_S0;
}
}
break;
case WHYW_STATE_S10://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ʼֵ
{
if(TASK_IDLE == EepIfIdle())
{
whyw_ee.Data.u_circle_store_index_w.datas = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>λ<EFBFBD><CEBB>
whyw_ee.Data.u_circle_store_index_r.datas = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB>
RtccGetDateTime(&whyw_ee.Data.store_circle_rtcc_end);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʱ<EFBFBD><CAB1>7<EFBFBD>ֽ<EFBFBD>
whyw_ee.Data.ee_nb_online_keep_time = 10;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> 1<>ֽ<EFBFBD> 10s
whyw_ee.Data.ee_nb_acq_interval = 30;//<2F><><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1<>ֽ<EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
whyw_ee.Data.ee_battery_pra[0]=0x00;//<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
whyw_ee.Data.ee_battery_pra[1]=0x03;
whyw_ee.Data.ee_battery_pra[2]=0x00;
whyw_ee.Data.ee_battery_pra[3]=0x03;
whyw_ee.Data.ee_upload_count_success.datas =0;//<2F>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9>ܴ<EFBFBD><DCB4><EFBFBD>
whyw_ee.Data.ee_upload_count_fail.datas = 0;//<2F>ϱ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
EepWrite(&whyw_ee.data_buf[0], EEP_ADDR_WHYW_CIRCLE_INDEX_W, EE_PRA_SIZE_WHYW, &s_eep_complete_WHYW);
step_circle_data_store = WHYW_STATE_S0;
}
}
break;
default:
{
step_circle_data_store = WHYW_STATE_S0;
break;
}
}
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
void DataStoreInit(void)
{
Quanzhou_Store_InitApp();
WHYW_Store_InitApp();
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢״̬<D7B4><CCAC>
void DataStoreMachine(void)
{
Quanzhou_Store_Machine();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
WHYWStore_Machine();
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
u8 DataStoreIfIdle(void)
{
if(step_circle_data_store == WHYW_STATE_S0)
{
return TRUE;
}
else
{
return FALSE;
}
}
#endif