#ifndef _CYCLIC_STORAGE_CFG_API_H_
|
#define _CYCLIC_STORAGE_CFG_API_H_
|
|
#include "define_all.h"
|
#include "system_parameter.h"
|
#include "sundry.h"
|
#include "billing.h"
|
#include "administrator.h"
|
|
typedef enum
|
{
|
REVERSE_READ = 0U,
|
POSITIVE_READ
|
}READ_DIRECTION;
|
|
|
// »·Ð´²ÎÊý´¢´æµÄ¿éÊýÁ¿
|
#define CYCLIC_PARA_STORAGE_BLOCK_CNT (1)
|
// »·Ð´²ÎÊý´¢´æµÄ´óС
|
#define CYCLIC_PARA_STORAGE_SIZE (CYCLIC_PARA_STORAGE_BLOCK_CNT * EEPROM_CFG_BLOCK_SIZE) // 4KB
|
// »·Ð´²ÎÊý´¢´æÆðʼµØÖ·£¨Ä¬ÈÏÖµ£©
|
#define CYCLIC_PARA_STORAGE_START_ADDR EEPROM_PHYS_START_ADDR
|
// »·Ð´²ÎÊý´¢´æ½áÊøµØÖ·£¨Ä¬ÈÏÖµ£©
|
#define CYCLIC_PARA_STORAGE_END_ADDR (CYCLIC_PARA_STORAGE_START_ADDR + CYCLIC_PARA_STORAGE_SIZE)
|
|
|
#define SYS_LOG_CYCLIC_TABLE_NUM (sizeof(sys_log_cyclic_table) / sizeof(SYSLOG_CYCLIC_TABLE_T))
|
#define PARA_AMEND_TABLE_NUM (sizeof(para_amend_table) / sizeof(PARA_AMEND_TABLE_T))
|
|
#define CYCLIC_INDEX_OFFSET sizeof(uint16_t)
|
#define LOG_CYCLIC_FLAG_OFFSET sizeof(uint8_t)
|
|
#define SYSLOG_CYCLIC_INFO_LEN sizeof(SYSLOG_CYCLIC_INFO_T)
|
#define SYSLOG_CYCLIC_INFO_NUM sizeof(sys_log_cyclic_data_g) / SYSLOG_CYCLIC_INFO_LEN
|
|
#pragma pack(1)
|
|
typedef struct
|
{
|
uint16_t log_index; // µ±Ç°´¢´æÌõÊý/Ë÷Òý ·¶Î§ 1 ~ (data_num + 1)
|
uint8_t log_cyclic_full_cnt; // »·Ð´Âú¼ÆÊýÆ÷
|
uint32_t log_index_addr;
|
uint32_t log_full_cnt_addr;
|
uint32_t log_start_addr; // ¿ªÊ¼µØÖ·
|
uint32_t log_end_addr; // ½áÊøµØÖ·¾ÍÊÇÏÂÒ»¸ö²ÎÊýµÄ¿ªÊ¼µØÖ·
|
} SYSLOG_CYCLIC_INFO_T; // Ñ»·´¢´æµÄÈÕÖ¾ÐÅÏ¢
|
|
typedef struct
|
{
|
SYSLOG_CYCLIC_INFO_T *table_id; // ´¢´æµÄ±íID
|
uint16_t data_size; // ´¢´æÒ»´ÎµÄÊý¾Ý´óС
|
uint16_t data_num; // ´¢´æµÄ×ÜÌõÊý
|
} SYSLOG_CYCLIC_TABLE_T; // Ñ»·´¢´æµÄÈÕÖ¾±í
|
|
typedef struct
|
{
|
SYSLOG_CYCLIC_INFO_T send_flow_data_log;
|
SYSLOG_CYCLIC_INFO_T sys_hour_flow_data_log;
|
SYSLOG_CYCLIC_INFO_T sys_day_flow_data_log;
|
SYSLOG_CYCLIC_INFO_T sys_month_flow_data_log;
|
|
SYSLOG_CYCLIC_INFO_T measure_alarm_log;
|
SYSLOG_CYCLIC_INFO_T other_alarm_log;
|
SYSLOG_CYCLIC_INFO_T valve_log;
|
SYSLOG_CYCLIC_INFO_T pay_log;
|
SYSLOG_CYCLIC_INFO_T restore_default_log;
|
SYSLOG_CYCLIC_INFO_T timing_log;
|
|
SYSLOG_CYCLIC_INFO_T gas_cumulate_amend_log;
|
SYSLOG_CYCLIC_INFO_T balance_amend_log;
|
SYSLOG_CYCLIC_INFO_T temp_cfg_amend_log;
|
SYSLOG_CYCLIC_INFO_T press_cfg_amend_log;
|
SYSLOG_CYCLIC_INFO_T billing_price_amend_log;
|
SYSLOG_CYCLIC_INFO_T flow_cfg_amend_log;
|
SYSLOG_CYCLIC_INFO_T cal_pulse_amend_log;
|
SYSLOG_CYCLIC_INFO_T sys_func_cfg_amend_log;
|
SYSLOG_CYCLIC_INFO_T alarm_ctl_send_bytes_amend_log;
|
SYSLOG_CYCLIC_INFO_T valve_ctl_bytes_amend_log;
|
SYSLOG_CYCLIC_INFO_T billing_alarm_cfg_amend_log;
|
SYSLOG_CYCLIC_INFO_T sec_corr_para_amend_log;
|
} SYSLOG_CYCLIC_DATA_T; // Ñ»·´¢´æµÄ¾ßÌåÈÕÖ¾Êý¾Ý
|
|
typedef enum
|
{
|
CYCL_SEND_FLOW_DATA = 0U,
|
CYCL_HOUR_FLOW_DATA,
|
CYCL_DAY_FLOW_DATA,
|
CYCL_MONTH_FLOW_DATA,
|
|
CYCL_MEASURE_ALARM, // 4
|
CYCL_OTHER_ALARM,
|
CYCL_VALVE,
|
CYCL_PAY,
|
CYCL_RESTORE_DEFAULT,
|
CYCL_TIMING,
|
|
CYCL_GAS_CUMULATE_AMEND, // 10
|
CYCL_BALANCE_AMEND,
|
CYCL_TEMP_CFG_AMEND,
|
CYCL_PRESS_CFG_AMEND,
|
CYCL_BILLING_PRICE_AMEND,
|
CYCL_FLOW_CFG_AMEND,
|
CYCL_CAL_PULSE_AMEND,
|
CYCL_SYS_FUNC_CFG_AMEND,
|
CYCL_ALARM_CTL_SEND_BYTES_AMEND,
|
CYCL_VALVE_CTL_BYTES_AMEND,
|
CYCL_BILLING_ALARM_CFG_AMEND,
|
CYCL_SEC_CORR_PARA_AMEND,
|
} CYCLIC_DATA_TYPE;
|
|
typedef struct
|
{
|
PARA_AMEND_T amend_id;
|
const SYSLOG_CYCLIC_TABLE_T *data_address;
|
} PARA_AMEND_TABLE_T; // ²ÎÊýÐ޸ļǼ±í¸ñ
|
|
#pragma pack()
|
|
extern const SYSLOG_CYCLIC_TABLE_T sys_log_cyclic_table[];
|
extern const PARA_AMEND_TABLE_T para_amend_table[12];
|
extern SYSLOG_CYCLIC_DATA_T sys_log_cyclic_data_g;
|
|
void Sys_Log_E2pCyclicAddrInit(void);
|
void Sys_Log_E2pCyclic_FirstPower_FlagInit(void);
|
void Sys_Log_E2pCyclic_NoFirstPower_FlagInit(void);
|
|
uint8_t Sys_Log_E2pCyclicFull(const SYSLOG_CYCLIC_TABLE_T *log_table_p);
|
|
uint32_t Sys_Log_E2pCyclic_ReverseGetStartAddr(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint16_t back_cnt);
|
|
void Sys_Log_E2pCyclicMultipleWrite(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint8_t *pBuffer,uint8_t write_cnt);
|
ErrorStatus_STM32 SendFlowData_SpecialWrite(uint8_t *pBuffer,uint8_t write_cnt);
|
ErrorStatus_STM32 SendFlowData_SpecialRead(uint8_t *pOutput,uint8_t read_cnt,uint8_t back_or_forward);
|
uint32_t SendFlowData_Read_1_Data(uint8_t *pOutput,uint32_t read_addr);
|
|
uint32_t Sys_Log_E2pCyclic_TimeGetStartAddr(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint16_t *pSend_data_num,
|
uint8_t start_time_bcd[6],uint8_t end_time_bcd[6],uint8_t para_flag);
|
uint32_t Sys_Log_E2pCyclic_StartTime_GetStartAddr(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint16_t *pSend_data_num,
|
uint8_t start_time_bcd[6],uint8_t end_time_bcd[6],uint8_t offset_addr);
|
|
void Sys_Log_E2pCyclicMultipleReverseRead(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint8_t *pOutput, uint16_t back_read_cnt);
|
void Sys_Log_E2pCyclicMultiplePositiveRead(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint8_t *pOutput, uint16_t forward_read_cnt,uint16_t data_cnt);
|
|
uint32_t Sys_Log_E2pCyclicRead_1_Data(const SYSLOG_CYCLIC_TABLE_T *log_table_p, uint8_t *pOutput,uint32_t read_addr);
|
|
#endif
|