#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