#include "sizhu_history_record.h" LOG_SIZHU_HISTORY_RUN_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, u8 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(u8 * 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; } uint8_t sizhu_historical_test(void) { }