forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-28 6b0d1f644233b2984d2a87553de598879cf05caf
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
#ifndef _WRC_SIZHU_V4_H_
#define _WRC_SIZHU_V4_H_
#include "define_all.h"
#include "wireless_remote_comm.h"
#include "system_general_para.h"
#include "extern_rtc.h"
 
#define   SIZHU_PROTOCOL_VERSION   0x42
#define   SIZHU_FRAME_HEAD        0x68
#define   SIZHU_DATA_HEAD         0x55
#define   SIZHU_FRAME_TAIL        0x16
 
#define     FIRST_DATA_SHIFT_SIZHU        sizeof(SIZHU_V4_PROTOCOL_HEAD_T)//26
 
#define        ONCE_REPORT_MAX_NUM        360  //ÏÞÖÆÒ»´ÎÉϱ¨×î¶àÉϱ¨ÌõÊý£¬ 15Ìì*24Ìõ
#define  FRAME_DATA_MAX    6     //Ò»Ö¡Êý¾Ý×î¶à°üº¬µÄÊý¾ÝÌõÊý    
#define     DATA_PACKET_HEAD_LENGTH        sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T)
#define     DATA_PACKET_LENGTH        sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T)
#define        FRAME_TAIL_LENGTH        sizeof(SIZHU_V4_PROTOCOL_TAIL_T)
 
///////////////ЭÒé¿ØÖÆÂë/////////////////////////////////////////////////////////////////////
//ÒµÎñ
#define SIZHU_CONTROL_CODE_DATAUP  0x0101
#define SIZHU_CONTROL_CODE_END     0x0102
#define SIZHU_CONTROL_CODE_MODIFY_KEY 0x0103
#define SIZHU_CONTROL_CODE_PUSH_SETTLEMENT_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
 
#pragma    pack(1)
 
 
typedef struct
{
  uint8_t frame_start_code;     // Ö¡Æðʼ·û
  uint8_t device_num[8];        // ±í¾ß±àºÅ
  uint8_t data_start_code;      // Êý¾ÝÆðʼ·û
  sClockBCD device_time;       // ÏµÍ³Ê±¼ä
  uint8_t protocol_ver;         // Ð­Òé°æ±¾
  uint16_t cmd_code_u16;        // ÃüÁî±êʶ
  uint16_t frame_num;           // Ö¡ÐòÁкÅ
  uint16_t frame_sum;           // ×ÜÖ¡Êý
  uint8_t key_ver;              // ÃÜÔ¿°æ±¾ºÅ
  uint16_t data_length; // Êý¾ÝÄÚÈݳ¤¶È
}SIZHU_V4_PROTOCOL_HEAD_T;         // ¹Ì¶¨µÄÖ¡Í·Êý¾Ý
 
typedef struct
{
  uint16_t check_crc;     // crcУÑé
  uint8_t frame_end_code; // Ö¡½áÊø·û
} SIZHU_V4_PROTOCOL_TAIL_T;   // ¹Ì¶¨µÄ֡βÊý¾Ý
 
 
typedef struct
{
  uint8_t    equipment_type;                            // É豸ÀàÐÍ£¬ÊÇÖ¸ÊÇ·ñ·ÖÌå»ú¡¢¼Æ·ÑģʽµÄÇø·ÖÀàÐÍ
  DEVICE_TYPE    device_type;                          // É豸ÐͺÅ,ÊÇÖ¸SZV103µÈÐͺÅ
  uint8_t sys_send_type;                                 // Éϸ淽ʽ
  int8_t iccid[20];                                     // iccid
  uint8_t signal_intensity;                              // ÐźÅÇ¿¶È
  uint8_t signal_intensity_level;                        // ÐźÅÇ¿¶ÈµÈ¼¶
  uint8_t net_info;                                      // ÍøÂçÐÅÏ¢
  uint8_t software_version[4];                           // Èí¼þ°æ±¾ºÅ
  uint8_t account_state;                                 // ¿ª»§×´Ì¬
  uint16_t alarm_word[7]; // ±¨¾¯×Ö
  uint16_t valve_close_reason;                           // ¹Ø·§Ô­Òò×Ö
  uint8_t reserve[8];                                    // ±£Áô
  uint8_t data_package_format;                           // Êý¾Ý°ü¸ñʽ
  uint8_t data_pack_num;                                 // Êý¾Ý°üÌõÊý
} SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T;                      // ÆÕͨÊý¾ÝµÄ¹Ì¶¨¸ñʽͷ
 
 
typedef struct
{
  sClockBCD sample_time; // ¶³½áʱ¼ä
  uint64_t sc_cumulate;   // ÕýÏò±ê¿ö×ÜÁ¿£¬ÎÞ·ûºÅ
  uint64_t wc_cumulate;   // ÕýÏò¹¤¿ö×ÜÁ¿£¬ÎÞ·ûºÅ
  int32_t sc_instant;     // ±ê¿ö˲ʱÁ¿£¬ÓзûºÅ
  int32_t wc_instant;     // ¹¤¿ö˲ʱÁ¿£¬ÓзûºÅ
  float pressure;
  float temperature;
  int64_t balance;                                    // Ê£Óà½ð¶î£¬ÓзûºÅ
  uint32_t uint_price;                                // µ¥¼Û
  uint8_t lith_vcc;                                   // ï®µç³Øµçѹ
  int8_t lith_vcc_per;                               // ï®µç³Øµçѹ°Ù·Ö±È
  uint8_t alka_vcc;                                   // ¼îµç³Øµçѹ
  int8_t alka_vcc_per;                               // ¼îµç³Øµçѹ°Ù·Ö±È
  uint16_t status[6]; // ×´Ì¬×Ö
//uint8_t reserved[40];
} SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T;
 
typedef struct
{
    uint16_t    current_report_data_num;  //µ±Ç°Ô¶´«µÄ×ÜÌõÊý£¬²»ÊÇÒ»Ö¡µÄÌõÊý
    uint16_t    last_frame_data_num;  //×îºóÒ»Ö¡ÌõÊý
    uint32_t    report_data_read_addr; //Êý¾Ý¶ÁÈ¡µØÖ·
    
}SIZHU_V4_REPORT_CTRL_PARA_T;
 
#pragma pack()
 
extern ErrorStatus    wrc_sizhuV4_result_flag;    //×îÖÕµÄͨѶ½á¹ûÅжϣ¬³õʼÖÃFAIL£¬×îÖÕ¸ù¾ÝЭÒéÈ·Èϱ¾´ÎͨѶÊÇ·ñ³É¹¦£¬±ÈÈç˼ÖþµÄЭÒéͨ¹ý½áÊøÖ¡ÅжÏÊÇ·ñ×îÖճɹ¦
extern ErrorStatus    report_sizhuV4_result_flag; //Éϱ¨ÊÇ·ñ³É¹¦±êÖ¾£¬ÓÃÓÚÒ»ÌìÖ®ÄÚÓÐûÓÐÉÏ´«³É¹¦¹ý£¬¸úwrc_sizhuV4_result_flagͨѶÊÇ·ñ³É¹¦²»Ò»Ñù£¬¿íËÉÒ»µã£¬Ö»ÒªÊý¾ÝÉϱ¨ÏìÓ¦³É¹¦¼´´ú±íÉϱ¨³É¹¦£¬ÊÕµ½½áÊøÖ¡Ò²´ú±í³É¹¦¡£
 
void    SizhuV4SendParaInit(void);
uint16_t    SizhuV4SendNormalData2buf(uint8_t * send_buf);
WRC_STATUS    SizhuV4ProtocolDataAnalysis(uint8_t *receive_buf,uint8_t *ack_buf,uint16_t *ack_buf_length);
 
#endif