R2UWaterRS485UW500/app/eeprom_app.c

964 lines
36 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
/***********************************************************************************
* @Copyright (c) :(C)2013, Qindao ieslab Co., Ltd
* @FileName :new_gsm_EEPROM_processor.c
* @Author :Intelligent gas team
* @Version :V1.0
* @Date :2013-11-29
* @Description :the function of the entity of system processor
************************************************************************************/
#ifdef __cplusplus
extern "C"
{
#endif
/*--------------------------------Including-------------------------------------------*/
#include "UWater_sys.h"
#include "UWater_frame_app.h"
#include "UWater_eeprom_driver.h"
#include "UWater_encryption_driver.h"
#include "UWater_valve_driver.h"
#include "UWater_uart_driver.h"
#include "UWater_timer1uS_driver.h"
#include "UWater_valve_app.h"
#include "UWater_rtcc_app.h"
#include "UWater_gp22_app.h"
#include "SOE.h"
#include "nb_upload_monitor.h"
#include "eeprom_app.h"
/*------------------------------ Variable Define -------------------------------------*/
//static u8 ee_package_rd_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//static u8 ee_package_wr_num; //д<><D0B4><EFBFBD><EFBFBD>
//static u8 ee_package_erase_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static IMPORTANT_DATA_OP important_data_rd_state = IMPORTANT_DATA_OP_S0;
//static IMPORTANT_DATA_OP important_data_wr_state = IMPORTANT_DATA_OP_S0;
//static IMPORTANT_DATA_OP important_data_erase_state = IMPORTANT_DATA_OP_S0;
static u8 important_data_rd_msg;
static TYPE_EE_INIT_STATE tmp_init_stat = EE_INIT_STATE_S0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬
static u8 task_init_complete = FALSE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
static u32 frame_para_buf[FRAME_PARA_BUF_LEN];//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
Data_object Sys_data_object;//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DateTime rtcc_tmp_ee_app;
static void SysData_Init(void);//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
static void Coefficient_Init(void); //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
static void Flow_coef_Init(void);//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
static void UDP_Update_Init(void);//UDP ip<69><70>ʼ<EFBFBD><CABC>
static void SOE_Pint_Init(void);
static void RtccInitApp(void);
//<2F><><EFBFBD><EFBFBD>Ҫд<D2AA>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ee<65><65>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Sys_data_object<63><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u16 ee_addr_compute(u8 *data_addr)
{
u16 addr_result;
if(data_addr >= (u8*)(&Sys_data_object.P1))
{
if( data_addr < ((u8*)(&Sys_data_object.P1) + sizeof(Sys_data_object.P1)) )
{
addr_result = EEP_FRAME_BASE_ADDR + data_addr - (u8*)(&Sys_data_object.P1);
return addr_result;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
//<2F>״<EFBFBD><D7B4>ϵ<EFBFBD><CFB5><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
void FirstPowerOnInit(void)
{
//Sys_data_object.P1.first_power_flg = FRAME_FIRST_POWER_FLG;//u8 first_power_flg---<2D><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־,<2C><><EFBFBD><EFBFBD>
Sys_data_object.P1.start_using_flg = 0x00; //0x00,//u8 start_using_flg---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־<EFBFBD><D6BE>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*<2A>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5>u8 report_freq_val[5]*/
Sys_data_object.P1.Time_upload_2006.s.type = 0x02; //0x02,//report_freq_val[0]---<2D><>ģʽ
Sys_data_object.P1.Time_upload_2006.s.period = 0x00; //0x00,//report_freq_val[1]---<2D><>ģʽ<C4A3><CABD>Ч
Sys_data_object.P1.Time_upload_2006.s.hour = 0x06; //0x06,//report_freq_val[2]---6<><36>
Sys_data_object.P1.Time_upload_2006.s.minute = 0x00; //0x00,//report_freq_val[3]---0<><30>
Sys_data_object.P1.Time_upload_2006.s.second = 0x00; //0x00,//report_freq_val[4]---0<><30>
/*ip<69><70>ַ:117.60.157.137*/
Sys_data_object.P1.server_ip[0] =221;//117; //117,//server_ip[0]
Sys_data_object.P1.server_ip[1] = 229;//60; //60,//server_ip[1]
Sys_data_object.P1.server_ip[2] =214;//157; //157,//server_ip[2]
Sys_data_object.P1.server_ip[3] =202;//137; //137,//server_ip[3]
/*<2A>˿ں<CBBF>:5683=0x1633*/
Sys_data_object.P1.server_port.datas = 5683;
//0x33,//server_port.datas_map.data0
//0x16,//server_port.datas_map.data1
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1>:19-7-1-00-00-00*/
Sys_data_object.P1.report_period_start[0]=0x00; //0x00,//report_period_start[0]---<2D><>
Sys_data_object.P1.report_period_start[1]=0x00; //0x00,//report_period_start[1]---<2D><>
Sys_data_object.P1.report_period_start[2]=0x00; //0x00,//report_period_start[2]---ʱ
Sys_data_object.P1.report_period_start[3]=0x01; //0x01,//report_period_start[3]---<2D><>
Sys_data_object.P1.report_period_start[4]=0x07; //0x07,//report_period_start[4]---<2D><>
Sys_data_object.P1.report_period_start[5]=0x19; //0x19,//report_period_start[5]---<2D><>
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>:29-7-1-00-00-00*/
Sys_data_object.P1.report_period_end[0]=0x00; //0x00,//report_period_end[0]---<2D><>
Sys_data_object.P1.report_period_end[1]=0x00; //0x00,//report_period_end[1]---<2D><>
Sys_data_object.P1.report_period_end[2]=0x00; //0x00,//report_period_end[2]---ʱ
Sys_data_object.P1.report_period_end[3]=0x01; //0x01,//report_period_end[3]---<2D><>
Sys_data_object.P1.report_period_end[4]=0x07; //0x07,//report_period_end[4]---<2D><>
Sys_data_object.P1.report_period_end[5]=0x99; //0x99,//report_period_end[5]---<2D><>
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ֵ:15*/
Sys_data_object.P1.report_step_len.datas =15;// 15,//report_step_len.datas_map.data0 //<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ15s
/*<2A><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>*/
Sys_data_object.P1.report_retry_times =0; //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>Ϊ0
/*<2A>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD>ʼʱ<CABC><CAB1>*/
Sys_data_object.P1.report_start_time[0] = 0x01; //0x01,//report_start_time[0]---<2D><>ʼ<EFBFBD><CABC>
Sys_data_object.P1.report_start_time[1] = 0x07; //0x07,//report_start_time[1]---<2D><>ʼ<EFBFBD><CABC>
Sys_data_object.P1.report_start_time[2] = 0x19; //0x19,//report_start_time[2]---<2D><>ʼ<EFBFBD><CABC>
Sys_data_object.P1.report_start_time[3] = 0x00; //0x00,//report_start_time[3]---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.report_start_time[4] = 0x30; //0x30,//report_start_time[4]---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.report_start_time[5] = 0x01; //0x01,//report_start_time[5]---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*<2A>ܼ<EFBFBD><DCBC>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>*/
Sys_data_object.P1.report_start_time[6] = 0x02; //0x02,//report_start_time[6]---<2D><>ʼ<EFBFBD>ɼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
Sys_data_object.P1.report_start_time[7] = 0x07; //0x07,//report_start_time[7]---<2D><>ʼ<EFBFBD>ɼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
Sys_data_object.P1.report_start_time[8] = 0x19; //0x19,//report_start_time[8]---<2D><>ʼ<EFBFBD>ɼ<EFBFBD>ʱ<EFBFBD><CAB1>ʱ
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>3000L/h=0x00000BB8*/
Sys_data_object.P1.high_flow_alarm.datas = 3000;
//0xB8,//high_flow_alarm.datas_map.data0
//0x0B,//high_flow_alarm.datas_map.data1
//0x00,//high_flow_alarm.datas_map.data2
//0x00,//high_flow_alarm.datas_map.data3
/*<2A><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> 6<><36><EFBFBD>ֽ<EFBFBD>*/
Sys_data_object.P1.ies_valve_paras.valve_state = VALVE_STATE_OPEN;//<2F><><EFBFBD><EFBFBD>״̬
Sys_data_object.P1.ies_valve_paras.valve_err = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
Sys_data_object.P1.ies_valve_paras.valve_total_time = 20; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.ies_valve_paras.valve_AD = VALVE_HOGH_ADC_VALUE;//<2F><><EFBFBD><EFBFBD>ADĬ<44><C4AC>ֵ
Sys_data_object.P1.ies_pulse_emergency.datas = 5; //Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE> 5<><35>
/*ͨ<><CDA8>Ƶ<EFBFBD><C6B5>:850=0x352*/
Sys_data_object.P1.report_fre.datas =850; //0x52,//report_fre.datas_map.data0
//0x03,//report_fre.datas_map.data1
/*APN20<32>ֽ<EFBFBD>:ctnb*/
Sys_data_object.P1.apn[0] = 0x01; //APNʹ<4E><CAB9>
Sys_data_object.P1.apn[1] = 0x04; //0x05,//apn[1]APN<50><4E><EFBFBD><EFBFBD>
Sys_data_object.P1.apn[2] = 'c';
Sys_data_object.P1.apn[3] = 't';
Sys_data_object.P1.apn[4] = 'n';
Sys_data_object.P1.apn[5] = 'b';
/*<2A><>ͨ<EFBFBD><CDA8>Կ---16<31>ֽ<EFBFBD>:QINGDAOJICHE-GNB*/
Sys_data_object.P1.key[0] = 81;
Sys_data_object.P1.key[1] = 73;
Sys_data_object.P1.key[2] = 78;
Sys_data_object.P1.key[3] = 71;
Sys_data_object.P1.key[4] = 68;
Sys_data_object.P1.key[5] = 65;
Sys_data_object.P1.key[6] = 79;
Sys_data_object.P1.key[7] = 74;
Sys_data_object.P1.key[8] = 73;
Sys_data_object.P1.key[9] = 67;
Sys_data_object.P1.key[10] = 72;
Sys_data_object.P1.key[11] = 45;
Sys_data_object.P1.key[12] = 78;
Sys_data_object.P1.key[13] = 71;
Sys_data_object.P1.key[14] = 78;
Sys_data_object.P1.key[15] = 66;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ---7<>ֽ<EFBFBD>*/
Sys_data_object.P1.mac_addr[0] = 0;
Sys_data_object.P1.mac_addr[1] = 0;
Sys_data_object.P1.mac_addr[2] = 0;
Sys_data_object.P1.mac_addr[3] = 0;
Sys_data_object.P1.mac_addr[4] = 0;
Sys_data_object.P1.mac_addr[5] = 0;
Sys_data_object.P1.mac_addr[6] = 0;
/*<2A><><EFBFBD>к<EFBFBD>---7<>ֽ<EFBFBD>*/
Sys_data_object.P1.ser_num[0] =0;
Sys_data_object.P1.ser_num[1] =0;
Sys_data_object.P1.ser_num[2] =0;
Sys_data_object.P1.ser_num[3] =0;
Sys_data_object.P1.ser_num[4] =0;
Sys_data_object.P1.ser_num[5] =0;
Sys_data_object.P1.ser_num[6] =0;
/*ͨ<>ŵ<EFBFBD>ַ---7<>ֽ<EFBFBD>*/
Sys_data_object.P1.met_addr[0] =0x01;
Sys_data_object.P1.met_addr[1] =0;
Sys_data_object.P1.met_addr[2] =0;
Sys_data_object.P1.met_addr[3] =0;
Sys_data_object.P1.met_addr[4] =0;
Sys_data_object.P1.met_addr[5] =0x33;
Sys_data_object.P1.met_addr[6] =0x78;
/*<2A>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʶ---1<>ֽ<EFBFBD>*/
Sys_data_object.P1.solidify_mac_addr_flg = 0x00;
/*<2A>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>---5<>ֽ<EFBFBD>,*/
Sys_data_object.P1.ies_valve_up_times.valve_up_times_pre = 4; //<2F>ط<EFBFBD><D8B7><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>(4*30)
Sys_data_object.P1.ies_valve_up_times.valve_up_times_total = 24;
Sys_data_object.P1.ies_valve_up_times.valve_up_times_realtime = 0;
Sys_data_object.P1.ies_valve_up_times.valve_auto_check = VALVE_AUTO_CHECK_OPEN;//VALVE_AUTO_CHECK_CLOSE;//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD>³<EFBFBD><C2B3>Լ<EFBFBD><D4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=0xAA<41><41>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ϲر<CFB9>
Sys_data_object.P1.ies_valve_up_times.reserv = 0x00;
/*<2A><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Կ---1<>ֽ<EFBFBD>*/
Sys_data_object.P1.enable_bak_key = 0x00;
/*<2A>´<EFBFBD>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>Կnum---1<>ֽ<EFBFBD>*/
Sys_data_object.P1.last_key_num = 0x00;
/*<2A><EFBFBD>ϵ<EFBFBD><CFB5>0---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.temperature_coefficient0.datas = 0x00000000;//0x00,0x00,0x00,0x00,//temperature_coefficient0
/*<2A><EFBFBD>ϵ<EFBFBD><CFB5>1---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.temperature_coefficient1.datas = 0x00000000;//0x00,0x00,0x00,0x00,//temperature_coefficient1
/*С<><D0A1><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_small.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_small 0x00010000
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>0---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_middle0.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_middle0 0x00010000
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>1---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_middle1.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_middle1 0x00010000
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>2---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_middle2.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_middle2 0x00010000
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>3---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_middle3.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_middle3 0x00010000
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>---4<>ֽ<EFBFBD>*/
Sys_data_object.P1.flow_coefficient_large.datas = 0x00010000;//0x00,0x00,0x01,0x00,//flow_coefficient_large 0x00010000
/*<2A><><EFBFBD>ü춨<C3BC><ECB6A8><EFBFBD><EFBFBD>---1<>ֽ<EFBFBD>*/
Sys_data_object.P1.enable_verification_function =0x5A;// 0x5A,//enable_verification_function
/*<2A><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><E2B9A6>---1<>ֽ<EFBFBD>*/
Sys_data_object.P1.enable_infrared_function = 0x5A;// 0x5A,//enable_infrared_function
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---32<33>ֽ<EFBFBD>*/
for(int i=0;i<32;i++)
{
Sys_data_object.P1.func_cfg_bytes[i] = 0x00;
}
Sys_data_object.P1.func_cfg_bytes[0]=15;//func_cfg_bytes[0]---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><><C4AC>15<31><35>
//0x00,//func_cfg_bytes[1]---<2D><><EFBFBD><EFBFBD><E2B0B4><EFBFBD><EFBFBD>ֵ:0x10=16 ---<2D><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
//0x00,//func_cfg_bytes[2]Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>Ĭ<EFBFBD>Ϲر<CFB9>,(0xAA<41><41><EFBFBD><EFBFBD>)
//0x00,//func_cfg_bytes[3]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ϲر<CFB9>(0xAA<41><41><EFBFBD><EFBFBD>)
////func_cfg_bytes[4~5]ԭ-<2D><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>ADCĬ<43><C4AC>ֵ
//0x00,//[6]ԭ---<2D>ط<EFBFBD><D8B7>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
//0x00,//[7]0x55<35><35>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.func_cfg_bytes[8]=0xAA,//[8]<5D><>֡<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>־(0xAAΪ<41><CEAA>֡)
//Sys_data_object.P1.func_cfg_bytes[9]=0xAA,//[9]0XAA<41>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>Լ
Sys_data_object.P1.func_cfg_bytes[10]=0x55;//[10]0x55<35><35><EFBFBD><EFBFBD>ACK<43>ж<EFBFBD><D0B6>ϱ<EFBFBD><CFB1>ɹ<EFBFBD>
//Sys_data_object.P1.func_cfg_bytes[11]=0x55;//[11]0x55,MN316<31><36><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><E4B9A6>
//Sys_data_object.P1.func_cfg_bytes[12]=0x80,//[12]ʹ<><CAB9>PSMģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>,0x80<38>ط<EFBFBD>ʹ<EFBFBD><CAB9>PSM,0x82һֱʹ<D6B1><CAB9>PSM
Sys_data_object.P1.func_cfg_bytes[13]=0x11;//ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
Sys_data_object.P1.func_cfg_bytes[14]=0x23;//ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
Sys_data_object.P1.func_cfg_bytes[15]=0x7F;//ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ϱ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 //func_cfg_bytes[15]---ԭ---<2D><>ʱ<EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>
Sys_data_object.P1.func_cfg_bytes[16]=2;//[16]<5D><><EFBFBD><EFBFBD>:<3A><EFBFBD><E3B2A5><EFBFBD><EFBFBD>2s,<2C><>λ<EFBFBD><CEBB>,
Sys_data_object.P1.func_cfg_bytes[17]=50;//[17]<5D><><EFBFBD><EFBFBD>:<3A><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>50ms,<2C><>λms
Sys_data_object.P1.func_cfg_bytes[18]=0x00;//[18]<5D><><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><E4B9A6>,0:2.5dbm;1:0dbm;2:-5dbm;3:-10dbm
Sys_data_object.P1.func_cfg_bytes[19]=5;//[19]<5D><><EFBFBD><EFBFBD><><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5
Sys_data_object.P1.func_cfg_bytes[20]=5;//Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Ĭ<EFBFBD><C4AC>5<EFBFBD><35>
Sys_data_object.P1.func_cfg_bytes[21]=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><><C4AC>0<EFBFBD>ر<EFBFBD>
Sys_data_object.P1.func_cfg_bytes[22]=7;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><><C4AC>7<EFBFBD><37>
Sys_data_object.P1.func_cfg_bytes[23]=20;//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><><C4AC>20
/*ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---2<>ֽ<EFBFBD><><C4AC>600ps=0x0258*/
//(DEFAULT_START_FLOW&0xFF),((DEFAULT_START_FLOW>>8)&0xFF), //#define DEFAULT_START_FLOW 0x00D1 //DN20ͭ63KPAʱ<41><CAB1>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
Sys_data_object.P1.start_flow.datas = DEFAULT_START_FLOW;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ---2<>ֽ<EFBFBD><>Ϸ<EFBFBD>ʽ1*/
Sys_data_object.P1.counter_current_flow.datas = 0x2B1A;//0x1A,0x2B,
/*<2A><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>---1<>ֽ<EFBFBD><><C4AC>8*/
Sys_data_object.P1.sampling_frequency = 0x08;// 0x08,
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С---1<>ֽ<EFBFBD><><C4AC>16*/
Sys_data_object.P1.buf_length = 0x10;// 0x10,
/*Ĭ<><C4AC><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><E6B4A2><EFBFBD><EFBFBD>0:30s*/
Sys_data_object.P1.storage_frequency = 15;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC>15<31><35><EFBFBD>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD>
/*Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>Ƶ<EFBFBD><C6B5>4(8Hz),<2C><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD>Ƶ<EFBFBD><C6B5>5(16Hz)*/
Sys_data_object.P1.jx_sampling_frequency[0] = 0x04; //0x04,0x05,
Sys_data_object.P1.jx_sampling_frequency[1] = 0x05;
/*Ĭ<><C4AC>NB<4E><42><EFBFBD><EFBFBD>ģʽΪ<CABD>ϵ<EFBFBD>ģʽ*/
Sys_data_object.P1.jx_psm_pwdown =0x01; //0x01,
/*Ĭ<><C4AC>NB<4E>ϱ<EFBFBD>ʧ<EFBFBD>ܺ<EFBFBD>4Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ѯcereg 40<34><30>*/
//0x40,0x38,60,0x00
#if PRODUCT_SY
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼĬ<D4BC><C4AC>NB<4E>ϱ<EFBFBD>ʧ<EFBFBD>ܺ<EFBFBD>30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ѯcereg 60<36><30>*/
Sys_data_object.P1.Upload_again_interval_time.datas = 1800;//1800=30x60
#else
Sys_data_object.P1.Upload_again_interval_time.datas = 14400;//14400=4x3600
#endif
Sys_data_object.P1.nb_para_login_ask_times.datas = 40;//CGATT<54><54>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
Sys_data_object.P1.Supplemental_send_flag.datas = 0;
Sys_data_object.P1.histroy_r = 0;
Sys_data_object.P1.histroy_w = 0;
//
Sys_data_object.P1.ies_pulse_remain.datas = 0;//<2F><>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
//#if UPLOAD_MODE_1
Sys_data_object.P1.run_information_object.total_use_sum_times_sec.to_uint32 = 0;//<2F><><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.bat_surplus.to_uint32 = ENERGY_OF_26500;//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>uAH
Sys_data_object.P1.run_information_object.use_sum_times_sec.to_uint32 = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.nb_use_sum_times_sec.to_uint32 = 0;//nb<6E>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.nb_upload_happen_num = 0;//nb<6E><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.run_information_object.valve_use_sum_times_sec = 0;//<2F><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.P1.run_information_object.ee_remain_para_energy_life = 3;//<2F><>ֵ
//#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P3.function_switch.ble_adv_fre = Sys_data_object.P1.func_cfg_bytes[16];//<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD>2<EFBFBD><32>
Sys_data_object.P3.function_switch.ble_con_para = Sys_data_object.P1.func_cfg_bytes[17];//<2F><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>50ms
Sys_data_object.P3.function_switch.ble_tx_power = Sys_data_object.P1.func_cfg_bytes[18];//<2F><><EFBFBD><EFBFBD><E4B9A6>
Sys_data_object.P3.function_switch.ble_scan_times = Sys_data_object.P1.func_cfg_bytes[19];//ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.ies_pulse_emergency.datas = Sys_data_object.P1.func_cfg_bytes[20];//Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
Sys_data_object.P3.function_switch.password_enable = Sys_data_object.P1.func_cfg_bytes[21];//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F><>EE<45>ж<EFBFBD><D0B6><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
void set_important_data_rd_state (void)
{
important_data_rd_state = IMPORTANT_DATA_OP_S1;
}
u8 get_important_data_rd_state (void)
{
return important_data_rd_state;
}
void LoadEepromImportantData(void)
{
set_important_data_rd_state();
while(get_important_data_rd_state())
{
EeReadImportantDataMachine();
EepMachineDriver();
}
Meter_BootVersionInit();//<2F><>ȡboot<6F><EFBFBD><E6B1BE>
Sys_data_object.P3.NBSleepMode = 0;//<2F><>PSMģʽ<C4A3>ϱ<EFBFBD>
}
//<2F><>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
void EeReadImportantDataMachine(void)
{
switch(important_data_rd_state)
{
case IMPORTANT_DATA_OP_S0:
{
}
break;
case IMPORTANT_DATA_OP_S1:
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S2;
}
break;
case IMPORTANT_DATA_OP_S2://ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
SysData_Init();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S3;
}
}
break;
case IMPORTANT_DATA_OP_S3://<2F><><EFBFBD><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
Coefficient_Init();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S4;
}
}
break;
case IMPORTANT_DATA_OP_S4://<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
Flow_coef_Init();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S5;
}
}
break;
case IMPORTANT_DATA_OP_S5://UDP ip<69><70>ʼ<EFBFBD><CABC>
{
UDP_Update_Init();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S6;
}
}
break;
case IMPORTANT_DATA_OP_S6://SOEָ<45><D6B8><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
SOE_Pint_Init();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S7;
}
}
break;
case IMPORTANT_DATA_OP_S7://RTCC<43><43>ʼ<EFBFBD><CABC>
{
RtccInitApp();
if(task_init_complete == TRUE)
{
task_init_complete = FALSE;
tmp_init_stat = EE_INIT_STATE_S1;
important_data_rd_state=IMPORTANT_DATA_OP_S8;
}
}
break;
case IMPORTANT_DATA_OP_S8://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
{
if(TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
Sys_data_object.P1.first_power_flg = FRAME_FIRST_POWER_FLG;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
EepWrite(&Sys_data_object.P1.first_power_flg, EEP_FRAME_BASE_ADDR, 1, &important_data_rd_msg);
}
important_data_rd_state = IMPORTANT_DATA_OP_S9;
}
}
break;
case IMPORTANT_DATA_OP_S9:
{
if(TASK_IDLE == EepIfIdle())
{
important_data_rd_state = IMPORTANT_DATA_OP_S0;
}
}
break;
default:
{
important_data_rd_state = IMPORTANT_DATA_OP_S0;
}
break;
}
}
//<2F><>״̬<D7B4><CCAC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
u8 EeReadImportantDataIfIdle(void)
{
if(TASK_IDLE == EepIfIdle())
{
if(IMPORTANT_DATA_OP_S0 == important_data_rd_state)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
else
{
return TASK_BUSY;
}
}
void StartEeReadImportantData(void)
{
important_data_rd_state = IMPORTANT_DATA_OP_S1;
}
/*******************************************************************************
* @fun_name: SysData_Init
* @brief : ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
static void SysData_Init(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
break;
}
case EE_INIT_STATE_S1://<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EEP_FRAME_FIRST_POWER_ADDR, &Sys_data_object.P1.first_power_flg, sizeof(Sys_data_object.P1), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S2;
}
break;
}
case EE_INIT_STATE_S2://<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD><C9B9>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־
{
Sys_data_object.P3.FirstPowerOnFlag = FIRST_POWER_ON_FLAG;
FirstPowerOnInit();
EepWrite(&(Sys_data_object.P1.start_using_flg), (EEP_FRAME_FIRST_POWER_ADDR+1), (sizeof(Sys_data_object.P1)-1), &important_data_rd_msg);
}
else
{
Sys_data_object.P3.FirstPowerOnFlag = 0;
}
Sys_data_object.P3.ProductUpoadFailFlag =0;
tmp_init_stat = EE_INIT_STATE_S3;
}
break;
}
case EE_INIT_STATE_S3://<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>ж<EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
{
if (TASK_IDLE == EepIfIdle())
{
if((0x2B1A !=Sys_data_object.P1.counter_current_flow.datas) &&(0x4D3C !=Sys_data_object.P1.counter_current_flow.datas))
{
Sys_data_object.P1.counter_current_flow.datas = 0x2B1A;
EepWrite(&Sys_data_object.P1.counter_current_flow.datas_map.data0,EEP_FRAME_COUNTER_CURRENT_FLOW_ADDR, sizeof (Sys_data_object.P1.counter_current_flow.datas), &important_data_rd_msg);
}
tmp_init_stat = EE_INIT_STATE_S4;
}
break;
}
case EE_INIT_STATE_S4://<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>ж<EFBFBD>:ʼ<><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
if((Sys_data_object.P1.start_flow.datas < MIN_START_FLOW)||(Sys_data_object.P1.start_flow.datas > MAX_START_FLOW))
{
Sys_data_object.P1.start_flow.datas = DEFAULT_START_FLOW;//Ĭ<><C4AC>ֵ
EepWrite(&Sys_data_object.P1.start_flow.datas_map.data0, EEP_FRAME_START_FLOW_ADDR, 2, &important_data_rd_msg);
}
tmp_init_stat = EE_INIT_STATE_S5;
}
break;
}
case EE_INIT_STATE_S5:
{
if (TASK_IDLE == EepIfIdle())
{
Frame_Para_Init();//ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
break;
}
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name: Coefficient_Init
* @brief : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽϵ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
static void Coefficient_Init(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
}
break;
case EE_INIT_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
memcpy(&cal_coefficient[0].flt, default_coefficient,sizeof(default_coefficient));//<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ģϵ<C4A3><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
EepWrite(&cal_coefficient[0].value[0], FRAME_FLOW_COEFFICIENT_ADDR, sizeof (cal_coefficient), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
else//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
EepRead(FRAME_FLOW_COEFFICIENT_ADDR, &cal_coefficient[0].value[0], sizeof (cal_coefficient), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S20;
}
}
}
break;
case EE_INIT_STATE_S20:
{
if (TASK_IDLE == EepIfIdle())
{
u8 flow_coef_ok_flg = 0; //<2F><><EFBFBD><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD>쳣flag
for(u8 i=0;i<MULT_COEFFICIENT_BUF_NUM;i++)//<2F>ж<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Ϸ<EFBFBD><CFB7>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>Ĭ<EFBFBD><C4AC>
{
if(0xFFFFFFFF==cal_coefficient[i].value_u32)//ϵ<><CFB5>Ĭ<EFBFBD><C4AC>Ϊ0xFFFFFFFF<46><46><EFBFBD><EFBFBD><EFBFBD>
{
flow_coef_ok_flg=0;
break;
}
if((COEFFICIENT_MAX < cal_coefficient[i].flt)||(cal_coefficient[i].flt <COEFFICIENT_MIN))//<2F>жϷ<D0B6>Χ<EFBFBD>д<EFBFBD>ȷ<EFBFBD><C8B7>-20191112
{
flow_coef_ok_flg=0;
break;
}
else if(cal_coefficient[i].flt != 0)
{
flow_coef_ok_flg=1;//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD>flag<61><67>1
}
}
if(0 == flow_coef_ok_flg)//<2F>ж<EFBFBD><D0B6>쳣ϵ<ECB3A3><CFB5>,<2C><>дĬ<D0B4><C4AC>ϵ<EFBFBD><CFB5>
{
memcpy(&cal_coefficient[0].flt, default_coefficient,sizeof(default_coefficient));
EepWrite(&cal_coefficient[0].value[0], FRAME_FLOW_COEFFICIENT_ADDR, sizeof (cal_coefficient), &important_data_rd_msg);
}
tmp_init_stat = EE_INIT_STATE_S3;
}
}
break;
case EE_INIT_STATE_S3:
{
if (TASK_IDLE == EepIfIdle())
{
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
}
break;
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name: Flow_coef_Init
* @brief : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
static void Flow_coef_Init(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
break;
}
case EE_INIT_STATE_S1://<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
{
if (TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
memcpy(&(cal_flow_coefficient[0].datas_map.data0), default_flow_coefficient, sizeof (default_flow_coefficient));//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
EepWrite(&cal_flow_coefficient[0].datas_map.data0, FRAME_FLOW_LOW_COEFFICIENT_ADDR, sizeof (cal_flow_coefficient), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
else//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
EepRead(FRAME_FLOW_LOW_COEFFICIENT_ADDR, &cal_flow_coefficient[0].datas_map.data0, sizeof (default_flow_coefficient), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S20;
}
}
break;
}
case EE_INIT_STATE_S20:
{
if (TASK_IDLE == EepIfIdle())
{
u8 flow_coef_ok_flg = 1;//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><ECB3A3>־ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0<><30><EFBFBD>쳣Ϊ
for(u8 i=0;i<FLOW_COEFFICIENT_BUF_NUM;i++)//<2F><>18<31><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
{
if(0xFFFFFFFF==cal_flow_coefficient[i].datas)//ϵ<><CFB5>Ĭ<EFBFBD><C4AC>Ϊ0xFFFFFFFF<46><46><EFBFBD><EFBFBD><EFBFBD>
{
flow_coef_ok_flg=0;
break;
}
if((FLOW_COEFFICIENT_MAX < cal_flow_coefficient[i].datas)||(cal_flow_coefficient[i].datas <FLOW_COEFFICIENT_MIN))//<2F>жϷ<D0B6>Χ<EFBFBD>д<EFBFBD>ȷ<EFBFBD><C8B7>-20191112
{
flow_coef_ok_flg=0;
break;
}
}
if(0 == flow_coef_ok_flg)//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>˾ͽ<CBBE>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>д<EFBFBD>뵽EEPROM
{
memcpy(&(cal_flow_coefficient[0].datas_map.data0), default_flow_coefficient, sizeof (default_flow_coefficient));//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
EepWrite(&cal_flow_coefficient[0].datas_map.data0, FRAME_FLOW_LOW_COEFFICIENT_ADDR, sizeof (cal_flow_coefficient), &important_data_rd_msg);
}
tmp_init_stat = EE_INIT_STATE_S3;
}
break;
}
case EE_INIT_STATE_S3:
{
if (TASK_IDLE == EepIfIdle())
{
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
break;
}
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name: UDP_Update_Init
* @brief : UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
static void UDP_Update_Init(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
break;
}
case EE_INIT_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
#if PRODUCT_SY
Sys_data_object.P2.server_ip[0] = 223;
Sys_data_object.P2.server_ip[1] = 100;
Sys_data_object.P2.server_ip[2] = 22;
Sys_data_object.P2.server_ip[3] = 125;
Sys_data_object.P2.server_port.datas = 3031;
#else
Sys_data_object.P2.server_ip[0] = 60;
Sys_data_object.P2.server_ip[1] = 208;
Sys_data_object.P2.server_ip[2] = 16;
Sys_data_object.P2.server_ip[3] = 58;
Sys_data_object.P2.server_port.datas = 7833;
#endif
EepWrite(&Sys_data_object.P2.server_ip[0], EEP_UPDATE_UDP_IP, 6, &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
else//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
EepRead(EEP_UPDATE_UDP_IP, &Sys_data_object.P2.server_ip[0], 6, &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
}
break;
}
case EE_INIT_STATE_S3:
{
if (TASK_IDLE == EepIfIdle())
{
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
break;
}
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name: SOE_Pint_Init
* @brief : SOE<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
static void SOE_Pint_Init(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
break;
}
case EE_INIT_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
if(FRAME_FIRST_POWER_FLG != Sys_data_object.P1.first_power_flg)//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
Sys_data_object.P4.Point_SOE_write = 0;
EepWrite(&Sys_data_object.P4.Point_SOE_write, EEP_ADDR_SOE_WR_POINT, 1, &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
else//<2F>ǵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
{
EepRead(EEP_ADDR_SOE_WR_POINT, &Sys_data_object.P4.Point_SOE_write, 1, &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
}
break;
}
case EE_INIT_STATE_S3:
{
if (TASK_IDLE == EepIfIdle())
{
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
break;
}
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
static void RtccInitApp(void)
{
switch (tmp_init_stat)
{
case EE_INIT_STATE_S0:
{
break;
}
case EE_INIT_STATE_S1:
{
if (TASK_IDLE == EepIfIdle())
{
EepRead(EE_FIRST_USE_ADDR, Sys_data_object.ee_data.byte, sizeof (RTCC_EE_DATA), &important_data_rd_msg); //<2F><>EE<45><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tmp_init_stat = EE_INIT_STATE_S2;
}
break;
}
case EE_INIT_STATE_S2:
{
if (TASK_IDLE == EepIfIdle())
{
if (Sys_data_object.ee_data.data.first_flag != RTCC_FIRST_FLAG)
{
//<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ<EFBFBD>
if (EepIfIdle())
{
Sys_data_object.ee_data.data.first_flag = RTCC_FIRST_FLAG; //<2F><>д<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>־λ
Sys_data_object.ee_data.data.work_hour = 0; //<2F><><EFBFBD>ۼƹ<DBBC><C6B9><EFBFBD>ʱ<EFBFBD><CAB1>
Sys_data_object.ee_data.data.day_data = 0xFFFFFFFF; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ֵ
RtccGetDateTime(&Sys_data_object.ee_data.data.start_time_up); //<2F><>¼<EFBFBD><C2BC><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>ʱ<EFBFBD><CAB1>
EepWrite(Sys_data_object.ee_data.byte, EE_FIRST_USE_ADDR, sizeof (RTCC_EE_DATA), &important_data_rd_msg);
tmp_init_stat = EE_INIT_STATE_S3;
}
}
else
{
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD>RTCC<43>Ƿ<EFBFBD><C7B7>ܷ<EFBFBD>
DateTime init_time;
if (ERROR == RtccGetDateTime(&init_time)) //<2F>ϵ<EFBFBD><CFB5><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϸ<EFBFBD>
{
init_time.s.year = 0x22;
init_time.s.month = 0x01;
init_time.s.day = 0x01;
init_time.s.hour = 0x00;
init_time.s.minute = 0x00;
init_time.s.second = 0x00;
RtccSetDateTime(&init_time);
}
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
}
break;
}
case EE_INIT_STATE_S3:
{
if (TASK_IDLE == EepIfIdle())
{
task_init_complete = TRUE;
tmp_init_stat = EE_INIT_STATE_S0;
}
break;
}
default:
{
tmp_init_stat = EE_INIT_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name: Frame_Para_Init
* @brief : ϵͳ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD>
* @param[in] :
* @param[out]: u32
* @retval : None
* @other :
******************************************************************************/
void Frame_Para_Init(void)
{
MET_STATE temp_state; //״̬<D7B4><CCAC>
frame_para_buf[FramePara_DNx] = GP30_APP_DNX;//DNx
frame_para_buf[FramePara_Tc0] = Sys_data_object.P1.temperature_coefficient0.datas;
frame_para_buf[FramePara_Tc1] = Sys_data_object.P1.temperature_coefficient1.datas;
frame_para_buf[FramePara_FcSmall] = Sys_data_object.P1.flow_coefficient_small.datas;
frame_para_buf[FramePara_FcMiddle0] = Sys_data_object.P1.flow_coefficient_middle0.datas;
frame_para_buf[FramePara_FcMiddle1] = Sys_data_object.P1.flow_coefficient_middle1.datas;
frame_para_buf[FramePara_FcMiddle2] = Sys_data_object.P1.flow_coefficient_middle2.datas;
frame_para_buf[FramePara_FcLarge] = Sys_data_object.P1.flow_coefficient_large.datas;
frame_para_buf[FramePara_ReportStartDMY] = Sys_data_object.P1.report_start_time[0]|(Sys_data_object.P1.report_start_time[1]<<8)|(Sys_data_object.P1.report_start_time[2]<<16);
frame_para_buf[FramePara_ReportStartSMH] = Sys_data_object.P1.report_start_time[8]|(Sys_data_object.P1.report_start_time[7]<<8)|(Sys_data_object.P1.report_start_time[6]<<16);
frame_para_buf[FramePara_ProgVersion] = PROGRAME_VERSION;
frame_para_buf[FramePara_MetAddr0_3] = Sys_data_object.P1.met_addr[0]|(Sys_data_object.P1.met_addr[1]<<8)|(Sys_data_object.P1.met_addr[2]<<16)|(Sys_data_object.P1.met_addr[3]<<24);
frame_para_buf[FramePara_MetAddr4] = Sys_data_object.P1.met_addr[4]|(Sys_data_object.P1.met_addr[5]<<8)|(Sys_data_object.P1.met_addr[6]<<16);
frame_para_buf[FramePara_FuncCfg0_3] = Sys_data_object.P1.func_cfg_bytes[0]|(Sys_data_object.P1.func_cfg_bytes[1]<<8)|(Sys_data_object.P1.func_cfg_bytes[2]<<16)|(Sys_data_object.P1.func_cfg_bytes[3]<<24);
frame_para_buf[FramePara_FuncCfg4_7] = Sys_data_object.P1.func_cfg_bytes[4]|(Sys_data_object.P1.func_cfg_bytes[5]<<8)|(Sys_data_object.P1.func_cfg_bytes[6]<<16)|(Sys_data_object.P1.func_cfg_bytes[7]<<24);
frame_para_buf[FramePara_FuncCfg8_11] = Sys_data_object.P1.func_cfg_bytes[8]|(Sys_data_object.P1.func_cfg_bytes[9]<<8)|(Sys_data_object.P1.func_cfg_bytes[10]<<16)|(Sys_data_object.P1.func_cfg_bytes[11]<<24);
frame_para_buf[FramePara_FuncCfg12_15]= Sys_data_object.P1.func_cfg_bytes[12]|(Sys_data_object.P1.func_cfg_bytes[13]<<8)|(Sys_data_object.P1.func_cfg_bytes[14]<<16)|(Sys_data_object.P1.func_cfg_bytes[15]<<24);
frame_para_buf[FramePara_ReportEndSMH] = Sys_data_object.P1.report_start_time[3]|(Sys_data_object.P1.report_start_time[4]<<8)|(Sys_data_object.P1.report_start_time[5]<<16);
frame_para_buf[FramePara_FcMiddle3] = Sys_data_object.P1.flow_coefficient_middle3.datas;
temp_state = FrameGetByte();
frame_para_buf[FramePara_Sta1_2] = temp_state.stat1|(temp_state.stat2<<8);//-------------------------------------------------------------
frame_para_buf[FramePara_CCFlow] = Sys_data_object.P1.counter_current_flow.datas_map.data0|(Sys_data_object.P1.counter_current_flow.datas_map.data1<<8);
frame_para_buf[FramePara_StartFlow] = Sys_data_object.P1.start_flow.datas;
/********************/
frame_para_buf[FramePara_GP30Freq] = Sys_data_object.P1.sampling_frequency;//----------------------------------------------------------------------
frame_para_buf[FramePara_GP30BufLen] = Sys_data_object.P1.buf_length;//----------------------------------------------------------------------------
frame_para_buf[FramePara_ReportFreq] = Sys_data_object.P1.Time_upload_2006.buf[0]|(Sys_data_object.P1.Time_upload_2006.buf[1]<<8)|(Sys_data_object.P1.Time_upload_2006.buf[2]<<16)|(Sys_data_object.P1.Time_upload_2006.buf[3]<<24);
frame_para_buf[FramePara_EnableTestFunc] = Sys_data_object.P1.enable_verification_function;
frame_para_buf[FramePara_EnableInfrareFunc] = Sys_data_object.P1.enable_infrared_function;
frame_para_buf[FramePara_StartUsingFunc] = Sys_data_object.P1.start_using_flg;
frame_para_buf[FramePara_StoreFrequency] = Sys_data_object.P1.storage_frequency;
frame_para_buf[FramePara_NbParaRetryDelay] = Sys_data_object.P1.Upload_again_interval_time.datas;
frame_para_buf[FramePara_NbParaLoginAckTimes] = Sys_data_object.P1.nb_para_login_ask_times.datas;
frame_para_buf[FramePara_BootVersion] = Meter_GetBootVersion();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P3.function_switch.ble_adv_fre = Sys_data_object.P1.func_cfg_bytes[16];//<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD>3<EFBFBD><33>
Sys_data_object.P3.function_switch.ble_con_para = Sys_data_object.P1.func_cfg_bytes[17];//<2F><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>50ms
Sys_data_object.P3.function_switch.ble_tx_power = Sys_data_object.P1.func_cfg_bytes[18];//<2F><><EFBFBD><EFBFBD><E4B9A6>
Sys_data_object.P3.function_switch.ble_scan_times = Sys_data_object.P1.func_cfg_bytes[19];//ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Sys_data_object.P1.ies_pulse_emergency.datas = Sys_data_object.P1.func_cfg_bytes[20];//Ӧ<><D3A6><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
Sys_data_object.P3.function_switch.password_enable = Sys_data_object.P1.func_cfg_bytes[21];//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/*******************************************************************************
* @fun_name: FrameCheckParaApp
* @brief : <EFBFBD><EFBFBD>ѯϵͳ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : parameter Frame_CheckParaTypeDef<EFBFBD><EFBFBD>ʽö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[out]: u32
* @retval : None
* @other :
******************************************************************************/
u32 FrameCheckParaApp(Frame_CheckParaTypeDef parameter)
{
return frame_para_buf[parameter];
}
void EeSysMachine(void)
{
EeReadImportantDataMachine();
EepMachineDriver();
}
#ifdef __cplusplus
}
#endif //#ifdef __cplusplus