#include "sizhu_history_record.h" #include "system_mem_para.h" LOG_SIZHU_HISTORY_CTRL_T log_sizhu_history_run_g; LOG_SIZHU_LOG_SAVE_T ufg620_log_g; /*ÀúÊ·¼Ç¼²ÎÊý³õʼ»¯eerrom*/ uint8_t sizhu_historical_eeprom_default_init(void) { // /*´æ´¢¿Õ¼äÈç¹û¸øµÄ²»¹»5000£¬ÄÇô·µ»Ø´íÎóÖµ*/ // // // // log_sizhu_history_run_g.per_period_log.log_count = 0; // log_sizhu_history_run_g.per_hour_log.log_count = 0; // log_sizhu_history_run_g.per_day_log.log_count = 0; // log_sizhu_history_run_g.per_month_log.log_count = 0; // // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_period_log.log_count, (STRUCT_PER_PERIOD_OFFSET) ); // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, (STRUCT_PER_HOUR_OFFSET) ); // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, (STRUCT_PER_DAY_OFFSET) ); // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, (STRUCT_PER_MONTH_OFFSET) ); // // log_sizhu_history_run_g.per_period_log.log_addr_begin = PER_PERIOD_LOG_OFFSET; // log_sizhu_history_run_g.per_hour_log.log_addr_begin = PER_HOUR_LOG_OFFSET; // log_sizhu_history_run_g.per_day_log.log_addr_begin = PER_DAY_LOG_OFFSET; // log_sizhu_history_run_g.per_month_log.log_addr_begin = PER_MONTH_LOG_OFFSET; // log_sizhu_history_run_g.per_period_log.log_addr_save = PER_PERIOD_LOG_OFFSET; // log_sizhu_history_run_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET; // log_sizhu_history_run_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET; // log_sizhu_history_run_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET; // // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_period_log.log_addr_save , (STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , (STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save, (STRUCT_DAY_LOG_ADDR_SAVE_OFFSET) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save, (STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET) ); return 1; } uint8_t sizhu_historical_record_clean(uint32_t epprom_begin_addr, LOG_SIZHU_RUN_T * log_run_ptr) { return 1; } /****************************************** * func: sizhu_historical_record_only_read_init * desc: ÀúÊ·Êý¾Ý´æ´¢²ÎÊý¶ÁÈ¡ * input: none * output: none * return: none *****************************************/ uint8_t sizhu_historical_record_only_read_init(void) { // log_sizhu_history_run_g.per_period_log.log_count = eeprom_data_read_uint16(STRUCT_PER_PERIOD_OFFSET); // log_sizhu_history_run_g.per_hour_log.log_count = eeprom_data_read_uint16(STRUCT_PER_HOUR_OFFSET); // log_sizhu_history_run_g.per_day_log.log_count = eeprom_data_read_uint16(STRUCT_PER_DAY_OFFSET); // log_sizhu_history_run_g.per_month_log.log_count = eeprom_data_read_uint16(STRUCT_PER_MONTH_OFFSET); // // log_sizhu_history_run_g.per_period_log.log_addr_begin = PER_PERIOD_LOG_OFFSET; // log_sizhu_history_run_g.per_hour_log.log_addr_begin = PER_HOUR_LOG_OFFSET; // log_sizhu_history_run_g.per_day_log.log_addr_begin = PER_DAY_LOG_OFFSET; // log_sizhu_history_run_g.per_month_log.log_addr_begin = PER_MONTH_LOG_OFFSET; // // log_sizhu_history_run_g.per_period_log.log_addr_save = eeprom_data_read_uint32(STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET); // log_sizhu_history_run_g.per_hour_log.log_addr_save = eeprom_data_read_uint32(STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET); // log_sizhu_history_run_g.per_day_log.log_addr_save = eeprom_data_read_uint32(STRUCT_DAY_LOG_ADDR_SAVE_OFFSET); // log_sizhu_history_run_g.per_month_log.log_addr_save = eeprom_data_read_uint32(STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET); // // // if((log_sizhu_history_run_g.per_period_log.log_addr_save > PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_period_log.log_addr_save < PER_PERIOD_LOG_OFFSET)) // { // log_sizhu_run_g.per_period_log_count = 0; // log_sizhu_history_run_g.per_period_log.log_addr_save = PER_PERIOD_LOG_OFFSET; // } // // if((log_sizhu_history_run_g.per_hour_log.log_addr_save > PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_hour_log.log_count = 0; // log_sizhu_history_run_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET; // } // // if((log_sizhu_history_run_g.per_day_log.log_addr_save > PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_day_log.log_count = 0; // log_sizhu_history_run_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET; // } // // if((log_sizhu_history_run_g.per_month_log.log_addr_save > PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_month_log.log_count = 0; // log_sizhu_history_run_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET; // } return 1; } //uint16_t sizhu_historical_period_log(void) //{ // return log_sizhu_run_g.per_period_log_count; //} //uint16_t sizhu_historical_hour_log(void) //{ // return log_sizhu_history_run_g.per_hour_log.log_count; //} //uint16_t sizhu_historical_day_log(void) //{ // return log_sizhu_history_run_g.per_day_log.log_count; //} //uint16_t sizhu_historical_month_log(void) //{ // return log_sizhu_history_run_g.per_month_log.log_count; //} uint8_t sizhu_historical_read_init(u32 * read_addr, u16 * save_count, uint8_t logtype) { // if(logtype == LOG_SIZHU_PERIOD_TYPE) // { // *read_addr = log_sizhu_run_g.per_period_log_addr_save; // *save_count = log_sizhu_run_g.per_period_log_count; // }else if(logtype == LOG_SIZHU_HOUR_TYPE) // { // *read_addr = log_sizhu_history_run_g.per_hour_log.log_addr_save; // *save_count = log_sizhu_history_run_g.per_hour_log.log_count; // }else if(logtype == LOG_SIZHU_DAY_TYPE) // { // *read_addr = log_sizhu_history_run_g.per_day_log.log_addr_save; // *save_count = log_sizhu_history_run_g.per_day_log.log_count; // }else if(logtype == LOG_SIZHU_MONTH_TYPE) // { // *read_addr = log_sizhu_history_run_g.per_month_log.log_addr_save; // *save_count = log_sizhu_history_run_g.per_month_log.log_count; // } return 1; } void file_data(uint8_t * ptr_ary) { // LOG_SIZHU_LOG_SAVE_T * log_str; // // log_str = (LOG_SIZHU_LOG_SAVE_T *)ptr_ary; // // // log_str->Sample_year = 0x19; // log_str->Sample_month = 0x10; // log_str->Sample_day = 0x18; // log_str->Sample_hour = 0x15; // log_str->Sample_min = 0x33; // log_str->Sample_sec = 0x12; // // log_str->StandardGasUsageTotal = 123.12; // log_str->WorkingGasUsageTotal = 456.67; // log_str->Standardvec = 135.79; // // log_str->Temperature = 12.12; // log_str->Pressure = 123; // } /****************************************** * func: sizhu_period_historical_record_save * desc: ÀúÊ·Êý¾Ý´æ´¢ * input: none * output: none * return: none *****************************************/ uint8_t sizhu_period_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_PERIOD_T * log_run_ptr) { // if(logtype == LOG_SIZHU_PERIOD_TYPE) // { // // eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_run_g.per_period_log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_PERIOD_T) ); // // // if((log_sizhu_run_g.per_period_log_addr_save >= PER_PERIOD_LOG_OFFSET_END)||(log_sizhu_run_g.per_period_log_addr_save < PER_PERIOD_LOG_OFFSET)) // { // log_sizhu_run_g.per_period_log_addr_save = PER_PERIOD_LOG_OFFSET; // // }else // { // log_sizhu_run_g.per_period_log_addr_save = log_sizhu_run_g.per_period_log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_PERIOD_T); // // } // // // // if(log_sizhu_run_g.per_period_log_count >= PERIOD_LOG_NUM) // { // // log_sizhu_run_g.per_period_log_count = PERIOD_LOG_NUM; // // }else // { // log_sizhu_run_g.per_period_log_count ++; // // } // // EEPROM_data_write_uint16(log_sizhu_run_g.per_period_log_count, ( STRUCT_PER_PERIOD_OFFSET ) ); // EEPROM_data_write_uint32(log_sizhu_run_g.per_period_log_addr_save , ( STRUCT_PERIOD_LOG_ADDR_SAVE_OFFSET ) ); // // // } // return 1; } uint8_t sizhu_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_T * log_run_ptr) { /**/ // if(logtype == LOG_SIZHU_HOUR_TYPE) // { // // eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_hour_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // // if((log_sizhu_history_run_g.per_hour_log.log_addr_save >= PER_HOUR_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_hour_log.log_addr_save < PER_HOUR_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_hour_log.log_addr_save = PER_HOUR_LOG_OFFSET; // // }else // { // log_sizhu_history_run_g.per_hour_log.log_addr_save = log_sizhu_history_run_g.per_hour_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T); // } // // if(log_sizhu_history_run_g.per_hour_log.log_count >= HOUR_LOG_NUM) // { // // log_sizhu_history_run_g.per_hour_log.log_count = HOUR_LOG_NUM; // // }else // { // log_sizhu_history_run_g.per_hour_log.log_count ++; // // } // // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_hour_log.log_count, ( STRUCT_PER_HOUR_OFFSET ) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_hour_log.log_addr_save , ( STRUCT_HOUR_LOG_ADDR_SAVE_OFFSET ) ); // // // // // }else if(logtype == LOG_SIZHU_DAY_TYPE) // { // eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_day_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // // if((log_sizhu_history_run_g.per_day_log.log_addr_save >= PER_DAY_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_day_log.log_addr_save < PER_DAY_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_day_log.log_addr_save = PER_DAY_LOG_OFFSET; // // }else // { // log_sizhu_history_run_g.per_day_log.log_addr_save = log_sizhu_history_run_g.per_day_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T); // } // // if(log_sizhu_history_run_g.per_day_log.log_count >= DAY_LOG_NUM) // { // // log_sizhu_history_run_g.per_day_log.log_count = DAY_LOG_NUM; // // }else // { // log_sizhu_history_run_g.per_day_log.log_count ++; // // } // // // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_day_log.log_count, ( STRUCT_PER_DAY_OFFSET ) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_day_log.log_addr_save , ( STRUCT_DAY_LOG_ADDR_SAVE_OFFSET ) ); // // // }else if(logtype == LOG_SIZHU_MONTH_TYPE) // { // eeprom_multiple_data_write( (uint8_t *)log_run_ptr, log_sizhu_history_run_g.per_month_log.log_addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // // if((log_sizhu_history_run_g.per_month_log.log_addr_save >= PER_MONTH_LOG_OFFSET_END)||(log_sizhu_history_run_g.per_month_log.log_addr_save < PER_MONTH_LOG_OFFSET)) // { // log_sizhu_history_run_g.per_month_log.log_addr_save = PER_MONTH_LOG_OFFSET; // // }else // { // log_sizhu_history_run_g.per_month_log.log_addr_save = log_sizhu_history_run_g.per_month_log.log_addr_save + sizeof(LOG_SIZHU_LOG_SAVE_T); // } // // if(log_sizhu_history_run_g.per_month_log.log_count >= MONTH_LOG_NUM) // { // // log_sizhu_history_run_g.per_month_log.log_count = MONTH_LOG_NUM; // // }else // { // log_sizhu_history_run_g.per_month_log.log_count ++; // // } // // // EEPROM_data_write_uint16(log_sizhu_history_run_g.per_month_log.log_count, ( STRUCT_PER_MONTH_OFFSET ) ); // EEPROM_data_write_uint32(log_sizhu_history_run_g.per_month_log.log_addr_save , ( STRUCT_MONTH_LOG_ADDR_SAVE_OFFSET ) ); // // // // } // // return 1; } /*ÈÕÖ¾¶ÁÈ¡º¯Êý*/ uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, LOG_SIZHU_LOG_SAVE_T * log_run_ptr) { // u32 addr_save; // // //addr_save = addr_length; // if(logtype == LOG_SIZHU_HOUR_TYPE) // { // // // //Èç¹û // if(addr == PER_HOUR_LOG_OFFSET) // { // addr_save = PER_HOUR_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T); // // }else // { // addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T); // // } // // // eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // }else if(logtype == LOG_SIZHU_DAY_TYPE) // { // //Èç¹û // if(addr <= PER_DAY_LOG_OFFSET) // { // addr_save = PER_DAY_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T); // // }else // { // addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T); // // } // // // eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // // }else if(logtype == LOG_SIZHU_MONTH_TYPE) // { // //Èç¹û // if(addr <= PER_MONTH_LOG_OFFSET) // { // addr_save = PER_MONTH_LOG_OFFSET_END - sizeof(LOG_SIZHU_LOG_SAVE_T); // // }else // { // addr_save = addr - sizeof(LOG_SIZHU_LOG_SAVE_T); // // } // // // eeprom_multiple_data_read( (uint8_t *)log_run_ptr,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // // // } // //// eeprom_multiple_data_read( (uint8_t *)&ufg620_log_g,addr_save, sizeof(LOG_SIZHU_LOG_SAVE_T) ); // // return addr_save; } void sizhuHistoryRecord(sClockBCD sys_clockBCD_in) { static FlagStatus hour_record_flag = RESET,day_record_flag = RESET,month_record_flag = RESET,interval_report_record_flag = RESET; uint16_t IntervalTime; uint8_t first_time[2] = {0,0}; /*¼ä¸ôÉϱ¨¶³½á*/ if(__SYS_STATUS_BYTES_GET(power_state) == SET) IntervalTime = wrc_para_sizhu_g.ext_power_data_interval; else IntervalTime = wrc_para_sizhu_g.bat_power_data_interval; if(IntervalTriggerHandle(sys_clockBCD_in,IntervalTime,first_time)==SET) interval_report_record_flag =SET; /*Сʱ¡¢Ìì¡¢ÔÂ*/ if((sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0)) //Сʱ¼Ç¼´æ´¢µã hour_record_flag =SET; if((sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//Ìì¼Ç¼´æ´¢µã day_record_flag =SET; if((sys_clockBCD_in.day == 1)&&(sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//ԼǼ´æ´¢µã month_record_flag =SET; if((interval_report_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){ //¼ä¸ô¶³½áÉϱ¨´æ´¢ interval_report_record_flag = RESET; } if((hour_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){ //Сʱ¼Ç¼´æ´¢ hour_record_flag = RESET; } if((day_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){ //Ìì¼Ç¼´æ´¢ day_record_flag = RESET; } if((month_record_flag == SET)&&(sys_fun_run_ctrl_g.rs485_ctrl_flag.running_flag ==RESET)){ //ԼǼ´æ´¢ month_record_flag = RESET; } }