forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-11 65062d0d5b21f838aa0043a15ce54cfab8d72c43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#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