forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-17 6ea1a42391f86e72f53042a966dae970a3fd77cb
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
#ifndef _SYSTEM_GENERAL_PARA_H
#define _SYSTEM_GENERAL_PARA_H
#include "define_all.h"
#include "extern_rtc.h"
 
/**************************************************
*Ö÷Òª¶¨ÒåһЩͨÓõĺ¯Êý¡¢±äÁ¿
*
***************************************************/
 
/*****************ͨÓÃö¾Ù******************************/
typedef enum
{
  DM_NONE = 0U,
  DM_HM_UFG610, // HM = HOLISTIC_METER
  DM_HM_UFG620,
  DM_HCM_UFG210,
  DM_SCM_SZV101,
  DM_SM_DTU100,
  DM_SCM_SZV102,
    DM_SCM_SZV103,
    DM_HM_UFG630,
    DM_HM_UFG220,     //Á÷Á¿¼Æ
    DM_HCM_UFG220 = 0x10U,    //È¼Æø±í
    DM_HCM_UFG620,
    DM_HCM_UFG630,
} DEVICE_TYPE; // É豸ÐͺÅ
 
typedef enum
{
    DN50_TYPE    = 1U,
    DN80_TYPE,
    DN100_TYPE,
    DN150_TYPE,
    DN200_TYPE,
        
    DN25_TYPE,
    DN32_TYPE,
    DN40_TYPE,
} CALIBER_TYPE; // ¿Ú¾¶
 
typedef enum
{
    EM_NONE    = 0U,
    EM_IFRTT,  //Ò»ÌåʽÁ÷Á¿Ô¶´«ÖÕ¶Ë
    EM_IFRCT,    //Ò»ÌåÁ÷Á¿Ô¶´«¿ØÖÆÖÕ¶Ë
    EM_SIFRTT,  //·ÖÌåʽÁ÷Á¿Ô¶´«ÖÕ¶Ë
    EM_SIFRCT,    //·ÖÌåÁ÷Á¿Ô¶´«¿ØÖÆÖÕ¶Ë
} EQUIPMENT_TYPE; // ·§ÃÅÐͺÅ
 
typedef enum
{
  LITTLE_ENDIAN = 0U,
    BIG_ENDIAN
} BIG_OR_LITTLE_ENDIAN; //Êý¾ÝÀàÐÍ´óС¶Ë
 
typedef enum
{
  FLOW_METER_CONN_NONE = 0U,
    FLOW_METER_CONN_PULSE,
    FLOW_METER_CONN_RS485,
    FLOW_METER_CONN_RS485_AND_PULSE
} FLOW_METER_CONN_TYPE; //Á÷Á¿¼ÆÁ¬½Ó·½Ê½
 
typedef enum
{
  BAUDRATE_1200 = 0U,
    BAUDRATE_2400 ,
    BAUDRATE_4800 ,
    BAUDRATE_9600 ,
    BAUDRATE_19200 ,
    BAUDRATE_38400 ,
    BAUDRATE_56000 ,
    BAUDRATE_57600 ,
    BAUDRATE_115200 
} BAUDRATE_CODE; //²¨ÌØÂÊ
 
typedef enum
{
  PARITY_NONE = 0U,
    PARITY_ODD ,
    PARITY_EVEN ,
 
} PARITY_BIT; //²¨ÌØÂÊ
 
typedef enum
{
    RS485_START_REASON_NONE = 0U,  //ÎÞ´¥·¢£¬²»ÐèÒªÖ´ÐÐ
  RS485_START_REASON_KEY ,  //°´¼ü
    RS485_START_REASON_TIMING,    //¶¨Ê±
    RS485_START_REASON_REPORT,    //ʵʱÉϱ¨ÐèÒª
    RS485_START_REASON_RECORD,    //±£´æ¼Ç¼ÐèÒª£¬¿ÉÓÃÓÚÉϱ¨¶³½áµÈÇé¿ö
 
} RS485_START_REASON; //485Æô¶¯Ô­Òò
 
 
/*****************ͨÓýṹÌå²ÎÊý******************************/
typedef struct
{
  __IO FlagStatus delay_flag;  // ÑÓʱʱ¼äµ½±ê־λ
  __IO uint16_t delay_time; // ÑÓʱ¾ßÌåʱ¼ä
} DELAY_SEC_TYPE_T;         // ÑÓʱʱ¼äÀàÐͽṹÌå
 
typedef struct
{
 
  DELAY_SEC_TYPE_T gprs_timeout_para;     // GPRS³¬Ê±Ê±¼ä
  DELAY_SEC_TYPE_T sys_active_time;       // ÏµÍ³¼¤»îʱ¼ä
    DELAY_SEC_TYPE_T sys_restart_delay_time;// ÏµÍ³ÖØÆôµÄÑÓ³Ùʱ¼ä
    DELAY_SEC_TYPE_T UC_active_time;       // ÉÏλ»ú¼¤»îʱ¼ä
} SYS_DELAY_SEC_PARA_T;
 
 
 
typedef struct
{
  __IO FlagStatus start_flag;  // ¹¦ÄÜÆô¶¯±êÖ¾
  __IO FlagStatus running_flag; // ¹¦ÄÜÔËÐÐÖбêÖ¾
} FUN_START_CTRL_T;         // ÑÓʱʱ¼äÀàÐͽṹÌå
 
 
typedef struct
{
  FUN_START_CTRL_T rs485_ctrl_flag;  
  FUN_START_CTRL_T wrc_ctrl_flag; 
    FUN_START_CTRL_T valve_ctrl_flag; 
    
} FUN_START_CTRL_PARA_T;         // ÑÓʱʱ¼äÀàÐͽṹÌå
 
 
/*****************ͨÓúê******************************/
#define    BCD_2_DECIMAL(__BCD__)     ((__BCD__ / 16) * 10 + __BCD__ % 16)
 
#define    DECIMAL_2_BCD(__DECIMAL__)     ((__DECIMAL__ / 16) * 10 + __DECIMAL__ % 16)
 
 
// ´óС¶Ëת»»
#define BSWAP_16(x) ((x & 0x00ff) << 8) | \
                        ((x & 0xff00) >> 8)
 
#define BSWAP_32(x) ((x & 0xff000000) >> 24) |    \
                        ((x & 0x00ff0000) >> 8) | \
                        ((x & 0x0000ff00) << 8) | \
                        ((x & 0x000000ff) << 24)
 
 
#define BSWAP_64(x) ((x & 0xff00000000000000) >> 56) |     \
                        ((x & 0x00ff000000000000) >> 40) | \
                        ((x & 0x0000ff0000000000) >> 24) | \
                        ((x & 0x000000ff00000000) >> 8) |  \
                        ((x & 0x00000000ff000000) << 8) |  \
                        ((x & 0x0000000000ff0000) << 24) | \
                        ((x & 0x000000000000ff00) << 40) | \
                        ((x & 0x00000000000000ff) << 56)
 
/*µÃ³ö½á¹¹Ìå³ÉÔ±Æ«ÒÆÁ¿ºÍ´óС*/
#define OFFSET_OF(type, member) ((size_t) & (((type *)0))->member)
#define SIZEOF_OF(type, member) (sizeof(((type *)0))->member)
 
 
// ÏµÍ³Í¨ÓÃÑÓ³Ùʱ¼äÉèÖÃ
#define __SYS_DELAY_SEC_TIME_SET_(__HANDLE__, __NUMBER__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_time = __NUMBER__)
 
// ÏµÍ³Í¨ÓÃÑÓ³Ùʱ¼ä»ñÈ¡
#define __SYS_DELAY_SEC_TIME_GET_(__HANDLE__)    ((&sys_delay_sec_para_g)->__HANDLE__.delay_time)
 
// ÏµÍ³Í¨ÓÃÑÓ³Ù±ê־λget
#define __SYS_DELAY_SEC_FLAG_GET(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag)
// ÏµÍ³Í¨ÓÃÑÓ³Ù±ê־λÉèÖÃ
#define __SYS_DELAY_SEC_FLAG_SET_(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag = SET)
// ÏµÍ³Í¨ÓÃÑÓ³Ù±ê־λÇå³ý
#define __SYS_DELAY_SEC_FLAG_CLEAR_(__HANDLE__) ((&sys_delay_sec_para_g)->__HANDLE__.delay_flag = RESET)
 
 
 
 
 
 
 
 
//ÈÕÖ¾ÔËÐвÎÊý
typedef struct log_sizhu_run_t
{
    uint16_t       log_count;
  uint32_t      log_addr_save;
  uint32_t      log_addr_begin;
    
}LOG_SIZHU_RUN_T;
 
 
 
 
 
//extern uint8_t read_data_buf_A_l[200];
//extern uint8_t read_data_buf_B_l[200];
//extern uint8_t read_data_buf_C_l[200];
 
extern __IO FlagStatus sys_run_period; // ÏµÍ³¼¤»îÖÜÆÚ
extern SYS_DELAY_SEC_PARA_T sys_delay_sec_para_g;  //ϵͳÑÓʱ¿ØÖÆ
extern FUN_START_CTRL_PARA_T sys_fun_run_ctrl_g;  //ϵͳ¹¦ÄÜÔËÐпØÖÆ
 
 
 
ErrorStatus  ucharcmp(uint8_t *dataA,uint8_t *dataB,u16 data_length);
void arrayA_2_arrayB(uint8_t * aA , uint8_t * aB, u16 len, BIG_OR_LITTLE_ENDIAN mode) ;
 
 
 
 
//int mem_cmp_aray( const void * cs, const void * ct, u32 count );
 
uint8_t    TwoTimeCompara(uint8_t* TimeBCD1, uint8_t* TimeBCD2);//6×Ö½ÚBCDʱ¼äÓ뵱ǰʱ¼ä±È½Ï£¬µ±Ç°Ê±¼ä´ó·µ»Ø0£¬ÏàµÈ·µ»Ø1£¬µ±Ç°Ê±¼äС·µ»Ø2¡£  ´ËÍ⣬ËÑË÷µÄʱ¼ä¸ñʽÎÞЧҲ·µ»Ø0£¬¼ÌÐøËÑË÷¡£
 
//unsigned char BCD2HEX(unsigned char bcd_data) ;   //BCD??HEX???    
//unsigned char HEX2BCD(unsigned char hex_data)  ; //HEX??BCD???     
void    dou26Byte( double data, unsigned char *array );
 
FlagStatus IntervalTriggerHandle(sClockBCD sys_clockBCD_in,uint16_t IntervalTime,uint8_t IntervalFirstTimeBCD[2]);
 
FlagStatus IO_JitterEliminationCheck(GPIO_Type* GPIOx, uint32_t GPIO_Pin,uint16_t delay_time_ms,BitAction bit_status);
 
#endif