forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
#ifndef _UPPER_COMPUTER_RW_API_H_
#define _UPPER_COMPUTER_RW_API_H_
 
#include "define_all.h" 
#include "upper_computer.h"
 
/*²Ù×÷ȨÏÞ*/
#define UC_NORMAL_USER 0x0001             // ÆÕͨÓû§È¨ÏÞ
#define UC_POWER_USER UC_NORMAL_USER << 1 // ¸ß¼¶Óû§È¨ÏÞ
#define UC_ADMIN_USER UC_POWER_USER << 1  // ¹ÜÀíÔ±Óû§È¨ÏÞ
#define UC_SUPERUSER UC_ADMIN_USER << 1   // ³¬¼¶Óû§È¨ÏÞ
 
#define UC_RECV_WRITE_TABLE_NUM (sizeof(uc_recv_write_tab_func) / sizeof(UC_RECV_WRITE_FUNC_TABLE_DRV_T))
#define UC_RECV_READ_TABLE_NUM (sizeof(uc_recv_read_tab_func) / sizeof(UC_RECV_READ_FUNC_TABLE_DRV_T))
 
 
#define UC_DATA_TABLE_BYTES_LENGTH 2                                                                                                       // ±íºÅ³¤¶È
 
 
#define SLAVE_UNION_PARA_LENGTH sizeof(UC_SLAVE_PARA_UNION_T)
#define SLAVE_SOFT_HARD_PARA_LENGTH sizeof(struct slave_soft_hard)
#define SLAVE_PIPE_PARA_LENGTH sizeof(struct pipe_para)
#define SLAVE_UT_PARA_LENGTH sizeof(struct ut_para)
#define SLAVE_CORR_SET_REAL_PARA_LENGTH sizeof(struct corr_set_real)
#define SLAVE_RAW_DATA_LENGTH sizeof(struct raw_data)
#define SLAVE_REAL_TIME_DATA_LENGTH sizeof(struct real_time_data)
#define SLAVE_UT_REAL_PARA_1_LENGTH sizeof(struct ut_real_para_1)
#define SLAVE_UT_REAL_PARA_2_LENGTH sizeof(struct ut_real_para_2)
#define SLAVE_RES_PARA_LENGTH sizeof(struct res_para)
#define SLAVE_TEMP_TIMEDIFF_PARA_LENGTH sizeof(struct temp_timediff_para)    
#define SLAVE_CORR_FIXED_PARA_LENGTH sizeof(struct corr_fixed)    
    
typedef enum{
    UCC_MASTER_INFO_RW = 2,
    UCC_TIME_RW = 45,
    
    UCC_SLAVE_INFO_RW_2 = 0x500,
    UCC_FLOW_CFG_PARA_RW,
    UCC_PRESS_CFG_PARA_RW,
    UCC_TEMP_CFG_PARA_RW,
    UCC_GPRS_CFG_RW,
    UCC_AES_KEYS_RW = 0x506,
    UCC_SAVE_TIME_RW,
    UCC_CUMULATE_SET_RW,
    UCC_STATE_BYTES_RO_2,
    UCC_FUNC_CFG_RW_2,
    UCC_ALARM_CFG_SEND_RW,
    UCC_VALVE_CTL_RW_2,
    UCC_VALVE_FLAG_WO,
    UCC_REALTIME_PARA_RO,
    UCC_MICRO_CONSTANT_PARA_RW,
    UCC_CYCLIC_LOG_DATA_INFO_RO,
    UCC_SEC_CORR_SET_PARA_RW,
    UCC_SEC_CORR_REAL_PARA_RO,
    UCC_ZERO_DRIFT_CFG_RW,
    
    UCC_BALANCE_SET_WO = 0x600,
    UCC_PAY_LOG_RO,
    UCC_PRICE_CFG_RW,
    UCC_BILLING_CFG_RW,
        
 
    UCC_SLAVE_INFO_RW = 0x2000,
    UCC_STATE_BYTES_RO = 0x2005,
    UCC_FUNC_CFG_RW,
    UCC_ALARM_CFG_RW,
    UCC_ALARM_SEND_RW,
    UCC_VALVE_CTL_RW = 0x2009, //0x2009 + 1 = 0x200A
    UCC_SLAVE_PIPE_RW = 0x2010,//ÓÉÓÚÊÇBCD¸ñʽËùÒÔÒªÖØÐ = 0x2010
    UCC_SLAVE_UT_RW,
    UCC_SLAVE_CORR_SET_RW,
    UCC_SLAVE_CORR_REAL_RO,
    UCC_SLAVE_RAW_DATA_RO,
    UCC_SLAVE_TP_DATA_RO,
    UCC_SLAVE_UT_REAL_1_RO,
    UCC_SLAVE_UT_REAL_2_RW,
    UCC_SLAVE_RST_WO = 0x2020,
    UCC_SLAVE_STATUS_RO,
    UCC_SLAVE_ALARM_RO,
    UCC_SLAVE_REAL_DATA_RO,
    UCC_SLAVE_ZERO_2_ZERO_WO,
    UCC_SLAVE_RES_RW,
    UCC_SLAVE_PWR_RW,
    UCC_SLAVE_TEMP_TIMEDIFF_RO,
    UCC_SLAVE_CAL_DATA_PARA_RW,
    UCC_SLAVE_CORR_FIXED_RW,
    
    UCC_BASIC_INFO_RW = 0x2050,
    UCC_CAL_PULSE_RW,
}UC_CMD;
 
 
#pragma pack(1)
 
typedef struct
{
    float temp_value;
    float timediff_value;
}TEMP_TIMEDIFF_T;
 
typedef union
{
  struct slave_soft_hard
  {
    uint8_t slave_pcb_num[5];       // pcbÐòÁкÅ
    uint8_t slave_pcb_type[5];      // pcbÐͺÅ
    uint8_t slave_hardware_ver[5];  // Ó²¼þ°æ±¾
    uint8_t slave_firmware_ver[4];  // ¹Ì¼þ°æ±¾
    uint8_t slave_firmware_crc[2];  // ¹Ì¼þcrc
    uint8_t slave_firmware_time[3]; // ¹Ì¼þ°æ±¾ÈÕÆÚ
  } slave_soft_hard_s;
  struct pipe_para
  {
    float pipe_area;
    float ut_physical_distance;
    float ut_effective_distance;
    float reimburse_time_a;
    float reimburse_time_b;
    uint8_t device_type;
  } pipe_para_s;
  struct ut_para
  {
    float real_vcc;
    float real_dac_value;
    float real_dac_num; // 0~4095
        float ad_conver_factor;
    float ut_ad_line_a; // 1~2047
    float ut_ad_line_b;
    float ut_da_line_line_a;
    float ut_da_line_line_b;
  } ut_para_s;
  struct corr_set_real
  {
    float flow[10];
    float corrected[10];
  } corr_set_real_s;
  struct raw_data
  {
    uint16_t ut_ad_a[500];
    uint16_t ut_ad_b[500];
  } raw_data_s;
  struct real_time_data
  {
    float forward_time_a;
    float reverse_time_b;
    float tof_diff;
    float flow_vel;
        float flow;
    float sound_vel;
    uint16_t forward_sig;
    uint16_t reverse_sig;
    uint16_t line_real_a;
    uint16_t line_real_b;
    uint16_t line_up_a;
    uint16_t line_up_b;
    uint16_t line_down_a;
    uint16_t line_down_b;
    uint16_t forward_gain;
    uint16_t reserve_gain;
        float raw_signal_a;
        float raw_signal_b;
  } real_time_data_s;
    struct temp_press
    {
        float temp;
        float press;
    }temp_press_s;
    struct ut_real_para_1
    {
        uint16_t res_a;
        uint16_t res_b;
        uint16_t line_real_a;
    uint16_t line_real_b;
        uint16_t signal_max_a;
        uint16_t signal_max_b;
    }ut_real_para_1_s;
    struct ut_real_para_2
    {
        uint16_t gain_max_a;
        uint16_t gain_min_a;
        uint16_t gain_max_b;
        uint16_t gain_min_b;
        uint16_t compensate_res_min;
        float res_time_diff;
    }ut_real_para_2_s;
    struct res_para
    {
        uint8_t res_state;
        uint8_t res_a;
        uint8_t res_b;
    }res_para_s;
    struct temp_timediff_para
    {
        uint8_t cal_state;
        uint8_t temp_point;
        TEMP_TIMEDIFF_T data_buffer[100];
    }temp_timediff_para_s;
    struct corr_fixed
    {
        uint8_t corr_fixed_state;
        uint8_t fixed_len_point;
        float flow_data_point[8];
    }corr_fixed_s;
} UC_SLAVE_PARA_UNION_T;
 
typedef ErrorStatus_STM32 (*pUc_RecvWrite_FuncHandler)(uint8_t *pData);
 
typedef struct
{
  const uint16_t uc_data_table;
  const uint8_t func_admin_mode;  // º¯ÊýģʽȨÏÞ£¨´ú±í¸Ãº¯ÊýÔÚʲôģʽÏ¿ɷÃÎÊ£©
  const uint16_t func_admin_user; // º¯ÊýÓû§È¨ÏÞ£¨´ú±í¿É·ÃÎʵÄȨÏÞ¼¶±ð£©
  pUc_RecvWrite_FuncHandler UcRecvWriteFuncHandler;
} UC_RECV_WRITE_FUNC_TABLE_DRV_T; // ÉÏλ»ú½ÓÊÕдÊý¾Ý±íÇý¶¯;
 
typedef ErrorStatus_STM32 (*pUc_RecvRead_FuncHandler)(uint8_t *pOutputData, uint16_t *data_field_len);
 
typedef struct
{
  const uint16_t uc_data_table;
  const uint8_t func_admin_mode;  // º¯ÊýģʽȨÏÞ£¨´ú±í¸Ãº¯ÊýÔÚʲôģʽÏ¿ɷÃÎÊ£©
  const uint16_t func_admin_user; // º¯ÊýÓû§È¨ÏÞ£¨´ú±í¿É·ÃÎʵÄȨÏÞ¼¶±ð£©
  pUc_RecvRead_FuncHandler UcRecvReadFuncHandler;
} UC_RECV_READ_FUNC_TABLE_DRV_T; // ÉÏλ»ú½ÓÊÕ¶ÁÊý¾Ý±íÇý¶¯;
 
 
 
#pragma pack()
 
extern UC_SLAVE_PARA_UNION_T slave_para_union_g;
 
 
/************************************** Write Data **************************************************************/
ErrorStatus_STM32 Uc_WriteMasterInfoHandler(uint8_t *pData);
 
ErrorStatus_STM32 Uc_WriteSalve_PwrHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteSlave_TransitionHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteTimeHandler(uint8_t *pData);
 
ErrorStatus_STM32 Uc_WriteFlowAlarmCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WritePressAlarmCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteTempAlarmCfgHandler(uint8_t *pData);
 
ErrorStatus_STM32 Uc_WritePulseFactorHandler(uint8_t *pData);
 
ErrorStatus_STM32 Uc_WriteFuncCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteAlarmCtlHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteAlarmSendHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteValveCtlHandler(uint8_t *pData);
 
ErrorStatus_STM32 Uc_WriteBasicInfoHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteFlowAlarmCfg_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WritePressAlarmCfg_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteTempAlarmCfg_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteBillingAlarmCfg_Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WritePulseFactor_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WritePriceCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteGprsCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteAes128KeysHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteSaveTimeCfgHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteBalanceSetHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteCumulateSetHandler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteFuncCfg_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteAlarmCtlSend_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteValveCtl_2Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteValveFlag_Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteMicroConstant_Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteSecCorrSet_Handler(uint8_t *pData);
ErrorStatus_STM32 Uc_WriteZeroDriftCfg_Handler(uint8_t *pData);
 
void Upper_ComputerWriteResultProcess(ErrorStatus_STM32 result_state, uint8_t *pData, UC_RECV_DATA_UNION_T *uc_recv_union_p);
ErrorStatus_STM32 Upper_ComputerWriteProcess(uint16_t work_permissions, uint16_t table_id, uint8_t *pWriteData);
 
/************************************** Read Data **************************************************************/
ErrorStatus_STM32 Uc_ReadMasterInfoHandler(uint8_t *pOutputData, uint16_t *data_field_len);
 
ErrorStatus_STM32 Uc_ReadSalve_PwrHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadSlave_TransitionHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadTimeHandler(uint8_t *pOutputData, uint16_t *data_field_len);
 
ErrorStatus_STM32 Uc_ReadFlowAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadPressAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadTempAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len);
 
 
ErrorStatus_STM32 Uc_ReadPulseFactorHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadStateBytesHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadFuncCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadAlarmCtlHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadAlarmSendHandler(uint8_t *pOutputData, uint16_t *data_field_len);
ErrorStatus_STM32 Uc_ReadValveCtlHandler(uint8_t *pOutputData, uint16_t *data_field_len);
 
ErrorStatus_STM32 Uc_ReadBasicInfoHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadFlowAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadPressAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadTempAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadBillingAlarmCfg_Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadPulseFactor_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadPriceCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadGprsCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadAes128KeysHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadSaveTimeCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadRealCumulateHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadStateBytes_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadFuncCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadAlarmCtlSend_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadValveCtl_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len);
 
ErrorStatus_STM32 Uc_ReadRealParaHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadMicroConstantHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadCyclicLogDataHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadSecCorrSetHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadSecCorrRealHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
ErrorStatus_STM32 Uc_ReadZeroDriftCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len);
 
void Upper_ComputerReadResultProcess(ErrorStatus_STM32 result_state, uint8_t *pData, UC_RECV_DATA_UNION_T *uc_recv_union_p);
ErrorStatus_STM32 Upper_ComputerReadProcess(uint16_t work_permissions, uint16_t table_id, uint8_t *pOutput);
 
 
#endif