forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

周巍
2024-04-11 91ef77c00ed797b1048c5187f416e351e646a009
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
#ifndef _SIZHU_TELECOM_PROCESS_H
#define _SIZHU_TELECOM_PROCESS_H
#include "gprs.h"
#include "sizhu_ctrl_word.h"
 
/****************************˼ÖþЭÒéÏà¹Ø****************************/
#define  SZV10X_VALVE_HAVE_BILLING_CENTER   0X42
#define  SIZHU_PROTOCOL_VERSION   0x40
 
#define   SIZHU_FRAME_HEAD        0x68
#define   SIZHU_DATA_HEAD         0x55
 
/****************************˼ÖþЭÒé¿ØÖÆÂë****************************/
//ÒµÎñ
#define SIZHU_CONTROL_CODE_DATAUP  0x0101
#define SIZHU_CONTROL_CODE_END     0x0102
#define SIZHU_CONTROL_CODE_MODIFY_KEY 0x0103
#define SIZHU_CONTROL_CODE_PUSH_TERMINAL_INFO 0x0104
 
//¹¦ÄÜ
#define SIZHU_CONTROL_CODE_ACCOUNT_STATUS  0x0201
#define SIZHU_CONTROL_CODE_SET_PARA_DEV 0x0202
#define SIZHU_CONTROL_CODE_READ_PARA_DEV 0x0203
#define SIZHU_CONTROL_CODE_SET_ALARM_CTRL_WORD 0x0204
#define SIZHU_CONTROL_CODE_READ_ALARM_CTRL_WORD 0x0205
#define SIZHU_CONTROL_CODE_SET_REPORT_PERIOD 0x0206
#define SIZHU_CONTROL_CODE_READ_REPORT_PERIOD 0x0207
#define SIZHU_CONTROL_CODE_SET_485_PARA 0x0208
#define SIZHU_CONTROL_CODE_READ_485_PARA 0x0209
#define SIZHU_CONTROL_CODE_READ_EQUIPMENT_INFO 0x0220
#define SIZHU_CONTROL_CODE_SET_TIME 0x0221
#define SIZHU_CONTROL_CODE_SET_IP_PORT 0x0222
#define SIZHU_CONTROL_CODE_READ_IP_PORT 0x0223
#define SIZHU_CONTROL_CODE_CLEAR_ABNORMAL 0x0224
#define SIZHU_CONTROL_CODE_SET_CUMULANT_0 0x0225
#define SIZHU_CONTROL_CODE_SET_DAY_MONTH_RECORD_STORAGE_TIME 0x0230
#define SIZHU_CONTROL_CODE_READ_DAY_MONTH_RECORD_STORAGE_TIME 0x0231
#define SIZHU_CONTROL_CODE_READ_HISTORY_RECORD 0x0232
#define SIZHU_CONTROL_CODE_READ_VALVE_RECORD 0x0233
#define SIZHU_CONTROL_CODE_READ_CUMULANT_MODIFY_RECORD 0x0234
 
//·§¿Ø
#define SIZHU_CONTROL_CODE_VALVE_CONTROL 0x0301
#define SIZHU_CONTROL_CODE_SET_BALANCE_INSUF_CLOSE_VALVE 0x0302
#define SIZHU_CONTROL_CODE_READ_BALANCE_INSUF_CLOSE_VALVE 0x0303
#define SIZHU_CONTROL_CODE_SET_VALVE_CLOSE_CTRL_WORD 0x0304
#define SIZHU_CONTROL_CODE_READ_VALVE_CLOSE_CTRL_WORD 0x0305
#define SIZHU_CONTROL_CODE_SET_NO_UP_CLOSE_DAY 0x0306
#define SIZHU_CONTROL_CODE_READ_NO_UP_CLOSE_DAY 0x0307
#define SIZHU_CONTROL_CODE_SET_NO_GAS_CLOSE_DAY 0x0308
#define SIZHU_CONTROL_CODE_READ_NO_GAS_CLOSE_DAY 0x0309
#define SIZHU_CONTROL_CODE_SET_CUMULANT_CLOSE 0x0310
#define SIZHU_CONTROL_CODE_READ_CUMULANT_CLOSE 0x0311
 
//±í¶Ë¼Æ·ÑÏà¹Ø²ÎÊý
#define SIZHU_CONTROL_CODE_RECHARGE 0x0401
#define SIZHU_CONTROL_CODE_SET_PRICE 0x0402
#define SIZHU_CONTROL_CODE_READ_PRICE 0x0403
 
#define   FRAME_DATA_MAX    3     //Ò»Ö¡Êý¾Ý×î¶à°üº¬µÄÊý¾ÝÌõÊý
 
#define     FIRST_DATA_SHIFT_SIZHU        26
 
#define     DATA_PACKET_HEADEA_LENGTH_SIZHU        57
#define     DATA_PACKET_DATA_LENGTH_SIZHU        sizeof(GPRS_DATA_NEW_PACKAGE_620)
 
 
 
 
//ÉÏ·¢ÀàÐÍ
#define REPORTING_TYPE_TIMING             0x01  //¶¨Ê±Éϱ¨
#define REPORTING_TYPE_TRIGGER            0x02  //´¥·¢Éϱ¨£¬°´¼ü
#define REPORTING_TYPE_ABNORMAL           0x03  //Òì³£Éϱ¨
#define REPORTING_TYPE_POWER_ON           0x04  //ÉϵçÉϱ¨
#define REPORTING_TYPE_INTERVAL          0x05  //¼ä¸ô
#define REPORTING_TYPE_AGAIN          0x06  //ÖØ±¨
 
 
#pragma pack(1)
typedef struct{
    //Ö¡Í·
    char        Framestart_symbol;      
    uint8_t     DeviceAddress[8];       
    char        Datastart_symbol;       
    uint8_t     Systemclock_year;
    uint8_t     Systemclock_month;
    uint8_t      Systemclock_day;
    uint8_t     Systemclock_hour;
    uint8_t     Systemclock_min;
    uint8_t      Systemclock_sec;
    uint8_t     Protocol_version;       
    uint16_t    Control_code;
    uint16_t    frameSeq;               
    uint16_t    totalTSeq;              
    char        KVer;                   
    uint16_t    Data_length;  
    
    
    //Êý¾Ý°üÍ·
    uint8_t     Equipment_type;
    uint8_t     Equipment_model;
    uint8_t     Send_type;      // 0x01:¶¨Ê±Éϸ棻0x02£º°´¼üÉϸ棻0x03£º¾¯±¨Éϸ棻  
    char        moduleSeq[20];          //ICCID
    uint8_t     Signal_intensity;       
    uint8_t     Signal_level;       
    uint8_t     Netinfo;       
    uint8_t     SoftVersion[4];       
    uint8_t     Account_status;
    SYSTEM_ALARM_WORD_T alarm_word;
    uint16_t    Valve_close_id;
    uint8_t     reserved[8];
    uint8_t     DataPackageType;//0 0 1 1 2 2
    uint8_t     dataGroup_Num;
    
    char         CS;
    char        Frameend_symbol;    
 
}SIZHU_GPRS_PROTOCOL_HEADER;
 
//°´ÕÕÐÂÆ½Ì¨Ð­ÒéÊý¾Ý°ü¸ñʽ0¶¨Òå  
typedef struct{
    
    uint8_t         Sample_year;
    uint8_t         Sample_month;
    uint8_t         Sample_day;
    uint8_t         Sample_hour;
    uint8_t         Sample_min;
    uint8_t         Sample_sec;
 
    uint64_t            fStandardGasUsageTotal;//·Å´ó10000±¶
    uint64_t            fWorkingGasUsageTotal;//·Å´ó10000±¶
 
    int                  fStandardvec;//·Å´ó10000±¶
    int                  fWorkingvec;//·Å´ó10000±¶
    
    float           Pressure;    
    float           Temperature;
        
    long long     residualAmount;//·Å´ó1000±¶
    uint32_t      uintPrice;//·Å´ó10000±¶
    
    uint8_t         Lith_battery_V;   //·Å´ó10±¶
    uint8_t         Lith_battery_V_Percent;   //0-100
 
    uint8_t         Alka_battery_V;    //·Å´ó10±¶
    uint8_t         Alka_battery_V_Percent;
    
    SYSTEM_STATUS_WORD_T  status_word; //
    
}GPRS_DATA_NEW_PACKAGE_VALVE; 
 
 
#pragma pack()
 
extern uint8_t KVer_AES_128_SIZHU[16];
extern volatile GPRS_SEND_CTRL_T    gprs_control_g_sizhu;
extern  SIZHU_GPRS_PROTOCOL_HEADER gprs_protocol_header_sizhu;
 
 
void    gprs_sizhu_handle(void);
 
GPRS_WORK_STATUS_T gprs_power_on_fun_sizhu();
GPRS_WORK_STATUS_T gprs_connection_fun_sizhu();
GPRS_WORK_STATUS_T Gprs_Send_Pro_sizhu();
GPRS_WORK_STATUS_T wait_gprs_send_ok_fun_sizhu();
GPRS_WORK_STATUS_T gprs_time_out_fun_sizhu();
GPRS_WORK_STATUS_T gprs_power_off_fun_sizhu(void);
 
void     GPRS_Init(u8 gprs_open_flag);
void gprs_protocol_header_2buff(uint8_t *header_in, uint8_t *buff, uint8_t len);
void  AES128_Decrypt_SIZHU(u8* dataIn,u8* key,u8* dataOut,uint16_t length);
u8 IntervalReportingHandle(u16 IntervalReportingInterval,u16 IntervalReporting1Time);
 
#endif