forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-07 fa6053f85287163f6e2d5dba690bec05cbc95f4a
Function/STORAGE/sizhu_alarm_record.c
@@ -1,60 +1,15 @@
#include "sizhu_alarm_record.h"
#include "sizhu_ctrl_word.h"
#include "eeprom.h"
#include "system_mem_para.h"
#include "rs485_data_analysis_pro.h"
#include "power_manage.h"
#include "mbcrc1.h"
#include "system_flash_mem_manage.h"
#include "system_eep_mem_manage.h"
//ALARM_REPORT_PARA_T alarm_report_para_g;
/******************************************
 * func: system_alarm_log_eeprom_default_init
* desc: ±¨¾¯ÈÕÖ¾´æ´¢²ÎÊý³õʼ»¯ÎªÄ¬ÈÏÖµ
 * input: none
 * output: none
 * return: none
 *****************************************/
uint8_t system_alarm_log_eeprom_default_init(void)
{
//   log_alarm_ctrl_g.system_alarm_log.log_count            = 0;
//   log_alarm_ctrl_g.system_alarm_log.log_addr_save        = SYSTEM_ALARM_LOG_STORAGE_START_ADDR;
//   EEPROM_data_write_uint16 ( log_alarm_ctrl_g.system_alarm_log.log_count, SYSTEM_ALARM_LOG_COUNT_ADDR );
//   EEPROM_data_write_uint32 ( log_alarm_ctrl_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_SAVE_ADDR );
//
//   log_alarm_ctrl_g.class_measure_abn.log_count            = 0;
//   log_alarm_ctrl_g.class_measure_abn.log_addr_save        = MEASURE_ALARM_LOG_STORAGE_START_ADDR;
//   EEPROM_data_write_uint16 ( log_alarm_ctrl_g.class_measure_abn.log_count, MEASURE_ALARM_LOG_COUNT_ADDR );
//   EEPROM_data_write_uint32 ( log_alarm_ctrl_g.class_measure_abn.log_addr_save, MEASURE_ALARM_LOG_SAVE_ADDR );
//   log_alarm_ctrl_g.valve_operation_log.log_count            = 0;
//   log_alarm_ctrl_g.valve_operation_log.log_addr_save        = VALVE_ACTION_LOG_STORAGE_START_ADDR;
//   EEPROM_data_write_uint16 ( log_alarm_ctrl_g.valve_operation_log.log_count, VALVE_ACTION_LOG_COUNT_ADDR );
//   EEPROM_data_write_uint32 ( log_alarm_ctrl_g.valve_operation_log.log_addr_save, VALVE_ACTION_LOG_SAVE_ADDR );
   return 0;
}
/******************************************
 * func: system_alarm_log_eeprom_default_init
* desc: ±¨¾¯ÈÕÖ¾´æ´¢²ÎÊý´Ó´æ´¢ÖлñÈ¡
 * input: none
 * output: none
 * return: none
 *****************************************/
uint8_t system_alarm_log_record_only_read_init(void)
{
//   log_alarm_ctrl_g.system_alarm_log.log_count            = eeprom_data_read_uint16 (  SYSTEM_ALARM_LOG_COUNT_ADDR );
//   log_alarm_ctrl_g.system_alarm_log.log_addr_save        = eeprom_data_read_uint32 (  SYSTEM_ALARM_LOG_SAVE_ADDR );
//
//   if((log_alarm_ctrl_g.system_alarm_log.log_addr_save > SYSTEM_ALARM_LOG_STORAGE_END_ADDR)||(log_alarm_ctrl_g.system_alarm_log.log_addr_save < SYSTEM_ALARM_LOG_STORAGE_START_ADDR))
//   {
//      log_alarm_ctrl_g.system_alarm_log.log_count            = 0;
//      log_alarm_ctrl_g.system_alarm_log.log_addr_save        = SYSTEM_ALARM_LOG_STORAGE_START_ADDR;
//   }
   return 0;
}
/******************************************
@@ -153,7 +108,59 @@
/*±¨¾¯¼Ç¼´æ´¢
*ÓиöÐòºÅÎÊÌ⣬ĿǰϣÍûÐòºÅÒ»Ö±Ôö¼Ó£¬µ«ÊÇÒòΪÐèҪûÓд洢EEP£¬ËùÒÔÖ»ÄܶÁÈ¡ÉÏÒ»Ìõ¼Ç¼£¬ÔÚÉÏÒ»Ìõ¼Ç¼µÄ»ù´¡ÉÏ+1
*/
void sizhuAlarmRecord(ALARM_TRIGGER_TYPE trigger_type,uint16_t alarm_id)
{
   LOG_SIZHU_SYS_ALARM_SAVE_T   sizhu_alarm_log_l;
   LOG_SIZHU_SYS_ALARM_SAVE_T   previous_log_l;
   uint32_t   previous_addr = 0;
   return;  //?û¾­¹ý²âÊÔ£¬ÏÈÆÁ±Î
   arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_alarm_log_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN);
   sizhu_alarm_log_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
   sizhu_alarm_log_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc;
   sizhu_alarm_log_l.instant_sc = flow_meter_data_g.instant_sc;
   sizhu_alarm_log_l.instant_wc = flow_meter_data_g.instant_wc;
   sizhu_alarm_log_l.temperature = flow_meter_data_g.temperature;
   sizhu_alarm_log_l.pressure = flow_meter_data_g.pressure;
   sizhu_alarm_log_l.ambient_tem = pwr_vol_g.mcu_temperature;
   sizhu_alarm_log_l.lith_bat_v = pwr_vol_g.lith_vcc * 10;
   sizhu_alarm_log_l.alka_bat_v = pwr_vol_g.alka_vcc * 10;
   arrayA_2_arrayB((uint8_t *)&system_status_word_g.status_word_union,(uint8_t *)&sizhu_alarm_log_l.status_word,sizeof(SYSTEM_STATUS_WORD_T), LITTLE_ENDIAN);
   sizhu_alarm_log_l.current_price = save_realtime_data_g.realtime_billing_data_s.price_now;
   sizhu_alarm_log_l.residual_amount = save_realtime_data_g.realtime_billing_data_s.balance_now;
   switch(trigger_type){
   case ALARM_HAPPEN:sizhu_alarm_log_l.alarm_id = alarm_id;break;
   case ALARM_END:sizhu_alarm_log_l.alarm_id = 0x1000+alarm_id;break;   //+0x1000´ú±í±¨¾¯½áÊø£¬Ê¶±ðµÚ4λΪ1
   default : break;
   }
   FLASH_LOG_ADDR_CHECK(log_alarm_ctrl_g.system_alarm_log,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_MAX_NUM);
   if(log_alarm_ctrl_g.system_alarm_log.log_count != 0){
      previous_addr = FlashLogPreviousAddrGet(log_alarm_ctrl_g.system_alarm_log.log_addr_save,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_END_ADDR);
      if(FlashMultipleReadAndCrcCheck((uint8_t *)&previous_log_l,previous_addr,SYSTEM_ALARM_LOG_LENGTH)== PASS)
         sizhu_alarm_log_l.serial_number = previous_log_l.serial_number +1;
      else
         sizhu_alarm_log_l.serial_number = 0;
   }else{
      sizhu_alarm_log_l.serial_number = 0;
   }
   //¼ÆËãCRC
   sizhu_alarm_log_l.CRC16_MODBUS = usMBCRC16(0xFFFF, (uint8_t * )&sizhu_alarm_log_l.record_time_BCD, sizeof(LOG_SIZHU_SYS_ALARM_SAVE_T) - sizeof(sizhu_alarm_log_l.CRC16_MODBUS) );
   FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_alarm_log_l,log_alarm_ctrl_g.system_alarm_log.log_addr_save,SYSTEM_ALARM_LOG_LENGTH);
   FLASH_LOG_CRTL_PARA_HANDLE(log_alarm_ctrl_g.system_alarm_log,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_MAX_NUM);
   //?²ÎÊý´æ´¢
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_alarm_ctrl_g,LOG_ALARM_CTRL_ADDR,LOG_ALARM_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_alarm_ctrl_g))==FAIL){
   }
}