#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)
|
{
|
|
}
|