forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-19 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c
Function/STORAGE/sizhu_history_record.c
@@ -7,7 +7,7 @@
#include "system_eep_mem_manage.h"
FlagStatus interval_report_record_flag = RESET;
@@ -15,7 +15,7 @@
uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, SIZHU_HISTORY_MDH_T * log_run_ptr)
{
   
//   u32      addr_save;
   u32      addr_save = 0;
//   
//   //addr_save = addr_length;
//   if(logtype == LOG_SIZHU_HOUR_TYPE)
@@ -79,7 +79,7 @@
//   
////   eeprom_multiple_data_read( (uint8_t *)&ufg620_log_g,addr_save, sizeof(SIZHU_HISTORY_MDH_T) );
//   
//   return addr_save;
   return addr_save;
}
@@ -89,7 +89,12 @@
{
   SIZHU_HISTORY_INTERVAL_T   sizhu_history_interval_l;
   
//   return;  //?û¾­¹ý²âÊÔ£¬ÏÈÆÁ±Î
   arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_history_interval_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN);
   //ÌØÊâ´¦Àí£¬µ±ÃëÖÓСÓÚ20ʱ£¬ÃëÖÓ¹é0£¬ÎªÁËÉϱ¨Æ½Ì¨µÄ¶³½áʱ¼ä¹æÕûºÃ¿´
   sizhu_history_interval_l.record_time_BCD.sec = (sizhu_history_interval_l.record_time_BCD.sec < 0x20)? 0: sizhu_history_interval_l.record_time_BCD.sec;
   
   sizhu_history_interval_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
   sizhu_history_interval_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc;
@@ -114,8 +119,7 @@
   
   FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_history_interval_l,log_sizhu_history_ctrl_g.per_interval_log.log_addr_save,sizeof(SIZHU_HISTORY_INTERVAL_T));
      
   FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_interval_log,HISTORY_INTERVAL_START_ADDR,sizeof(SIZHU_HISTORY_INTERVAL_T),HISTORY_INTERVAL_MAX_NUM);
   FLASH_LOG_CRTL_PARA_HANDLE(log_sizhu_history_ctrl_g.per_interval_log,HISTORY_INTERVAL_START_ADDR,sizeof(SIZHU_HISTORY_INTERVAL_T),HISTORY_INTERVAL_MAX_NUM);
   //?²ÎÊý´æ´¢
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g))==FAIL){
      
@@ -127,7 +131,11 @@
{
   SIZHU_HISTORY_MDH_T   sizhu_history_l;
   
   return;  //?û¾­¹ý²âÊÔ£¬ÏÈÆÁ±Î
   arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_history_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN);
   //ÌØÊâ´¦Àí£¬ÃëÖÓ¹é0£¬ÎªÁ˹æÕûºÃ¿´
   sizhu_history_l.record_time_BCD.sec = 0;
   
   sizhu_history_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
   sizhu_history_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc;
@@ -169,11 +177,61 @@
   }
}
void HistoryRecordTest(void)
{
   static uint8_t  test_start_flag =0;
   ErrorStatus   test_Status = PASS;
   uint16_t   count_i = 0;
   uint16_t   record_num = 0;
   uint16_t   have_record_num = 0;
   uint32_t   read_addr;
   uint32_t   err_addr;
   uint32_t   err_count;
   SIZHU_HISTORY_INTERVAL_T   history_interval_l;
   if(test_start_flag == 1){
      test_start_flag = 0;
      //¼ä¸ô¼Ç¼²âÊÔ
      have_record_num = 0;
      record_num = log_sizhu_history_ctrl_g.per_interval_log.log_count;
      read_addr = log_sizhu_history_ctrl_g.per_interval_log.log_addr_save;
      for(count_i = 0;count_i < record_num;count_i++){
            have_record_num ++;
         if(read_addr <= HISTORY_INTERVAL_START_ADDR)
            read_addr = HISTORY_INTERVAL_END_ADDR;
         else
            read_addr -= HISTORY_INTERVAL_LENGTH;
         if(FlashMultipleReadAndCrcCheck((uint8_t *)&history_interval_l,read_addr,HISTORY_INTERVAL_LENGTH)== PASS){
         }else{
            test_Status = FAIL;
            break;
         }
      }
      if(test_Status == FAIL){
         err_addr = read_addr;
         err_count = log_sizhu_history_ctrl_g.per_interval_log.log_count - count_i;
      }
   }
}
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;
   static FlagStatus hour_record_flag = RESET,day_record_flag = RESET,month_record_flag = RESET;
   
   uint16_t   IntervalTime;
   uint8_t first_time[2] = {0,0};
@@ -203,6 +261,9 @@
      //¼ä¸ô¶³½áÉϱ¨´æ´¢
      interval_report_record_flag = RESET;
      sizhuIntervalHistoryRecord();
      wrc_data_num_ctrl_para_sizhu_g.report_data_save_num ++;
      //?´æ´¢
   }
   
@@ -224,5 +285,8 @@
      sizhuMDHHistoryRecord(HISTORY_TYPE_MONTH);
   }
   
   HistoryRecordTest(); //?²âÊÔº¯Êý£¬²âÊÔÍêÐèҪעÊÍ
}