forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-19 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c
Function/STORAGE/sizhu_history_record.h
@@ -3,21 +3,50 @@
#include "sizhu_ctrl_word.h"
#include "system_general_para.h"
#include "system_mem_para.h"
#include "system_flash_mem_manage.h"
typedef enum
{
  HISTORY_TYPE_HOUR = 1U,
  HISTORY_TYPE_DAY,
   HISTORY_TYPE_MONTH,
   HISTORY_TYPE_INTERVAL
} HISTORY_TYPE;       // ÀúÊ·¼Ç¼ÀàÐÍ
/*ÈÕÖ¾¶¨ÒåÀàÐÍ*/
/*ÀúÊ·¼Ç¼´æ´¢¿ØÖÆ*/
//ԼǼ
#define   HISTORY_MONTH_START_ADDR         MONTH_HISTORY_RECORD_STORAGE_START_ADDR
#define   HISTORY_MONTH_LENGTH               sizeof(SIZHU_HISTORY_MDH_T)
#define   HISTORY_MONTH_MAX_NUM                  120U
#define   HISTORY_MONTH_END_ADDR            HISTORY_MONTH_START_ADDR + HISTORY_MONTH_LENGTH * (HISTORY_MONTH_MAX_NUM -1)
//Ìì¼Ç¼
#define   HISTORY_DAY_START_ADDR         DAY_HISTORY_RECORD_STORAGE_START_ADDR
#define   HISTORY_DAY_LENGTH               sizeof(SIZHU_HISTORY_MDH_T)
#define   HISTORY_DAY_MAX_NUM                     730U
#define   HISTORY_DAY_END_ADDR            HISTORY_DAY_START_ADDR + HISTORY_DAY_LENGTH * (HISTORY_DAY_MAX_NUM -1)
//Сʱ¼Ç¼
#define   HISTORY_HOUR_START_ADDR         HOUR_HISTORY_RECORD_STORAGE_START_ADDR
#define   HISTORY_HOUR_LENGTH               sizeof(SIZHU_HISTORY_MDH_T)
#define   HISTORY_HOUR_MAX_NUM                  4400U
#define   HISTORY_HOUR_END_ADDR            HISTORY_HOUR_START_ADDR + HISTORY_HOUR_LENGTH * (HISTORY_HOUR_MAX_NUM -1)
//¼ä¸ô¼Ç¼
#define   HISTORY_INTERVAL_START_ADDR         INTERVAL_HISTORY_RECORD_STORAGE_START_ADDR
#define   HISTORY_INTERVAL_LENGTH               sizeof(SIZHU_HISTORY_INTERVAL_T)
#define   HISTORY_INTERVAL_MAX_NUM            1000U
#define   HISTORY_INTERVAL_END_ADDR            HISTORY_INTERVAL_START_ADDR + HISTORY_INTERVAL_LENGTH * (HISTORY_INTERVAL_MAX_NUM -1)
#define    LOG_SIZHU_HOUR_TYPE               1
#define    LOG_SIZHU_DAY_TYPE               2
#define    LOG_SIZHU_MONTH_TYPE            3
#define    LOG_SIZHU_PERIOD_TYPE             4
#pragma pack(1)
//¼ä¸ô¶³½áÈÕÖ¾ÄÚÈÝ
typedef struct log_sizhu_log_save_period_t
typedef struct
{
   uint16_t   CRC16_MODBUS;
   sClockBCD       record_time_BCD;
   double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
@@ -40,11 +69,12 @@
   SYSTEM_STATUS_WORD_T  status_word;
}LOG_SIZHU_LOG_SAVE_PERIOD_T;
}SIZHU_HISTORY_INTERVAL_T;  //84
//Ô¡¢ÈÕ¡¢Ê±ÈÕÖ¾ÄÚÈÝ
typedef struct log_sizhu_log_save_t
typedef struct
{
   uint16_t   CRC16_MODBUS;
   sClockBCD       record_time_BCD;
   double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
@@ -57,39 +87,33 @@
   
   u32   current_price;
   double   residual_amount;
   uint8_t            reverse[2];
}LOG_SIZHU_LOG_SAVE_T;
}SIZHU_HISTORY_MDH_T;
typedef struct
{
   LOG_SIZHU_RUN_T per_period_log;
   LOG_SIZHU_RUN_T per_hour_log;
   LOG_SIZHU_RUN_T per_day_log;
   LOG_SIZHU_RUN_T per_month_log;
}LOG_SIZHU_HISTORY_RUN_T;
#pragma pack()
extern LOG_SIZHU_HISTORY_RUN_T      log_sizhu_history_run_g;
uint8_t sizhu_historical_eeprom_default_init(void);
uint8_t sizhu_historical_record_only_read_init(void);
uint8_t sizhu_historical_record_clean(uint32_t epprom_begin_addr, LOG_SIZHU_RUN_T * log_run_ptr);
uint8_t sizhu_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_T * log_run_ptr);
uint8_t sizhu_period_historical_record_save(uint8_t logtype, LOG_SIZHU_LOG_SAVE_PERIOD_T * log_run_ptr);
uint8_t sizhu_historical_record_clean(uint32_t epprom_begin_addr, LOG_SIZHU_CTRL_T * log_run_ptr);
uint8_t sizhu_historical_record_save(uint8_t logtype, SIZHU_HISTORY_MDH_T * log_run_ptr);
uint8_t sizhu_period_historical_record_save(uint8_t logtype, SIZHU_HISTORY_INTERVAL_T * log_run_ptr);
//
uint16_t sizhu_historical_period_log(void);
uint16_t sizhu_historical_hour_log(void);
uint16_t sizhu_historical_day_log(void);
uint16_t sizhu_historical_month_log(void);
uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, LOG_SIZHU_LOG_SAVE_T * log_run_ptr);
uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, SIZHU_HISTORY_MDH_T * log_run_ptr);
uint8_t sizhu_historical_read_init(u32 * read_addr, u16 * save_count, uint8_t logtype);
void sizhuHistoryRecord(sClockBCD sys_clockBCD_in);
extern FlagStatus interval_report_record_flag;
#endif