blob: 3daed084c4cde791ebe28e9279773645348a4c77 [file] [log] [blame]
zongqiang.zhang0c6a0882019-08-07 14:48:21 +08001#ifndef _SP_CONFIG_H
2#define _SP_CONFIG_H
3
4#include "sp_version.h"
5#include "../nec_hardware.h"
6
7#ifndef int8
8#define int8 signed char
9#endif
10
11#ifndef uint8
12#define uint8 unsigned char
13#endif
14
15#ifndef int16
16#define int16 signed short
17#endif
18
19#ifndef uint16
20#define uint16 unsigned short
21#endif
22
23#ifndef int32
24#define int32 signed int
25#endif
26
27#ifndef uint32
28#define uint32 unsigned int
29#endif
30
31#ifndef NULL
32#define NULL ((void *)0)
33#endif
34
zongqiang.zhang5868d4d2019-11-22 17:28:13 +080035#define DEV_TYPE "G401201"
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080036#define DEV_OFFLINE_DEFAULT_HOUR 168
37#define DEV_BLKBITMAP_DONE 1984
zongqiang.zhang039d01e2019-12-03 17:27:54 +080038#define DEV_MAX_DEVICENO 64
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080039
40#define PRO_VERSION GIT_VERSION
41#define BUILD_DATE __DATE__ // " " __TIME__
42#ifdef FLOWSENSOR
43#define PURCHASE_FLOWSENSOR 1
44#else
45#define PURCHASE_FLOWSENSOR 0
46#endif
47
48enum
49{
50 SP_KEY_NONE = 0xFF,
51 SP_KEY_0 = 0,
52 SP_KEY_1 = 1,
53 SP_KEY_2 = 2,
54 SP_KEY_3 = 3,
55 SP_KEY_4 = 4,
56 SP_KEY_5 = 5,
57 SP_KEY_6 = 6,
58 SP_KEY_7 = 7,
59 SP_KEY_8 = 8,
60 SP_KEY_9 = 9,
61 SP_KEY_ENTER = 12,
62 SP_KEY_CLEAR = 11
63};
64
65typedef enum
66{
67 PAYMODE_INIT = 0,
68 PAYMODE_CARD = 1,
69 PAYMODE_QRCODE = 2,
70} sp_paymode_e;
71
72#pragma pack(push)
73#pragma pack(1)
74
75typedef struct
76{
77 uint8 command;
78 uint32 sendtime;
79} sp_comm_status_t;
80
81typedef struct
82{
83 uint32 last_heartbeat_ticker;
84 uint8 hwVer[16]; //É豸°æ±¾ºÅ
85 uint8 offlineRecordCount; //δÉÏ´«Á÷Ë®ÊýÁ¿
86 uint8 workMode; //µ±Ç°×´Ì¬£¬0-¿ÕÏУ¬1-ÕýÔÚʹÓã¬9-ÒÉËÆ¹ÊÕÏ
87 uint8 heart_status; //ÐÄÌø×´Ì¬£¬0-³õʼ»¯£¬1-·¢ËÍ£¬2-½ÓÊÕ
88} sp_heartbeat_t;
89
90typedef struct
91{
92 uint32 last_login_ticker;
93 uint8 login_flag; //0-δǩµ½£¬1-ÒÑÇ©µ½£¬2-×¢Ïú
94 uint8 hwVer[16]; //É豸°æ±¾ºÅ
95 uint8 deviceKey; //É豸¹¤×÷ÃÜÔ¿
96} sp_login_t;
97
98//Ïû·ÑÁ÷Ë®ÐÅÏ¢½á¹¹
99typedef struct
100{
101 uint8 devphyid[4]; //É豸±àºÅ
102 uint8 transdate[3]; //YYDDMM¸ñʽÈÕÆÚ
103 uint8 transtime[3];
guangcheng.qin00668842019-08-19 09:45:25 +0800104 uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800105 uint8 cardphyid[4]; //¿¨ÎïÀíid
106 uint8 transway; //½»Ò×·½Ê½£¬0-³õʼ£¬1-Ë¢¿¨£¬2-ɨÂë
107 uint8 amount; //ʵ¼ÊÖ§¸¶½ð¶î
108 uint8 paidAmount; //ÒÑÖ§¸¶½ð¶î£¬µ±ÊÇÏȿ۷ÑģʽÏ£¬¼Ç¼ÒÑÖ§¸¶µÄ½ð¶î
109 uint8 flowsensors; //ʵ¼ÊʹÓüÆÁ¿£¨µ¥Î»£º°ÙºÁÉý£©
110 uint8 transtatus; //Á÷ˮ״̬£¬0-³õʼ£¬1-³É¹¦£¬2-ʧ°Ü
guangcheng.qin00668842019-08-19 09:45:25 +0800111 uint8 reverse[7]; //ռλ·û
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800112 uint8 crc[2]; //len=32
113} sp_transdtl_t;
114
115typedef struct
116{
117 uint8 offline_work_hour; //ÔÊÐíÍÑ»ú¹¤×÷×î´óСʱ 0 ~ 168 Сʱ£¬0 ±íʾ²»ÏÞÖÆ
118 uint8 deviceno; //»úºÅ
119 uint8 devphyid[4]; //ÎïÀíID
120 uint8 flowsensor_unit; // 100ml¶ÔÓ¦Âö³åÊý
121 uint8 unused[54];
122 uint8 login_flag; //0-δǩµ½£¬1-ÒÑÇ©µ½£¬2-ÒÑ×¢Ïú
123 uint8 crc[2];
124} sp_config_t;
125
126typedef struct
127{
128 uint32 transaddr; //µØÖ·
129 uint16 this_offset; //Ò³Æ«ÒÆÎ»
130 uint8 crc[2]; //len=8
131} sp_last_transdtl_t;
132
133typedef struct
134{
135 uint32 transaddr; //µØÖ·
136 uint16 this_offset; //Ò³Æ«ÒÆÎ»
137 uint8 crc[2]; //len=8
138} sp_unconfirm_transdtl_t;
139
140//Ïû·ÑÐÅÏ¢
141typedef struct
142{
143 uint32 free_used_num; //ÒÑÃâ·ÑʹÓüÆÁ¿(µ¥Î»:100ml)
144
145 uint8 starttime[6]; //Ë¢¿¨Ê±¼ä
146 /*Ïȿۿîºó³öË®*/
147 uint16 prepaid_num; //µ¥´Î¿ÉÓüÆÁ¿(µ¥Î»:100ml)
148 uint16 prepaid_amt; //µ¥´ÎÔ¤¸¶½ðÇ®
149
150 uint16 paid_num; //ÀۼƿÉÓüÆÁ¿(µ¥Î»:100ml)
151 uint16 paid_sum; //ÀÛ¼ÆÖ§¸¶½ð¶î
152 uint16 used_num; //ÒÑʹÓüÆÁ¿(µ¥Î»:100ml)
153} sp_purchase_t;
154
155//¶þάÂëÐÅÏ¢
156typedef struct
157{
158 char qrcode_url[32]; ///¶þάÂë¶ÌÂë
159 uint32 starttime; //¶þάÂ뿪ʼʱ¼ä
160 uint32 nowtime; //¶þάÂ뵱ǰʱ¼ä
161 uint32 validtime; //¶þάÂëÓÐЧʱ¼ä
zongqiang.zhangb65f1242019-12-10 16:08:16 +0800162 uint32 waittime; //³öË®µÈ´ýʱ¼ä
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800163 uint8 authstatus; //Óû§È·ÈÏ״̬£¨0-δȷÈÏ£¬1-ÒÑÈ·ÈÏ£©
164 uint8 paystatus; //Ö§¸¶×´Ì¬£¨0-´ýÖ§¸¶£¬ 1-ÒÑÖ§¸¶£¬ 2-´ú¿Û£¬3 - ¹Ø±Õ£©
165 uint8 paidAmount; //µ±¶©µ¥ÊÇÒÑÖ§¸¶×´Ì¬£¬·µ»ØÖ§¸¶³É¹¦½ð¶î £¬ ·ñÔòÊÇ 0
166} sp_qrcode_t;
167
168//É豸²ÎÊý
169typedef struct
170{
171 uint8 dev_offline_maxhour; //É豸ÍÑ»ú×î´ó¹¤×÷ʱ¼ä(Сʱ),0-²»ÏÞÖÆ,168-ĬÈÏʱ¼ä
172 uint8 flowsensor_unit; //100ml¶ÔÓ¦Âö³åÊý
173 uint8 hwVer[16]; //É豸°æ±¾ºÅ
174 uint8 deviceKey[8]; //É豸¹¤×÷ÃØÔ¿
175 uint8 work_mode; //É豸¹¤×÷״̬
176} sp_sysconf_t;
177
178
179typedef struct
180{
181 uint8 tag_type;
182 uint8 cur_state;
183 uint8 snr[8];
184 uint32 firsttick; //Ê״ζÁ¿¨Ê±¼ä
185 uint32 lasttick; //×îºó¶Á¿¨Ê±¼ä
186} sp_cardstate_t;
187
188typedef struct
189{
190 uint8 current_state; //µ±Ç°¹¤×÷״̬
191 uint16 errcode;
192 uint32 tick;
193 uint8 last_state; //ÉÏÒ»´Î״̬
194
195 uint8 pause_status; //Óû§Ê¹ÓÃ״̬£¬0--ʹÓÃÖУ¬!0--ÔÝÍ£
196 uint32 pause_tick; //ÔÝͣʱµÄʱ¼ä
197} sp_cardworkstate_t;
198
199//Ë®¿ØÆ÷É豸ÐÅÏ¢
200typedef struct
201{
202 uint8 link_stat; //0--Á´Â·¹¤×÷ÖУ¬1---Á´Â·¿ÉÓÃ
203 uint8 load_para_status; //0--Õý³££¬!0--´íÎó
204 uint8 deviceno;
guangcheng.qin00668842019-08-19 09:45:25 +0800205 uint8 local_deviceno;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800206 uint8 devphyid[4];
207
208 sp_cardstate_t cardState;
209 sp_sysconf_t sysconf;
210 sp_comm_status_t last_comm_status;
211 sp_heartbeat_t heartbeat;
212 sp_login_t devlogin;
213 sp_last_transdtl_t last_transdtl;
214 sp_unconfirm_transdtl_t unconfirm_transdtl;
215
216 sp_paymode_e paymode;
217 sp_purchase_t purchase;
218} sp_pos_t;
219
220//·ÑÂÊÐÅÏ¢
221typedef struct
222{
223 uint8 fee_start; //T°ÙºÁÉý¿ªÊ¼;
224 uint8 fee_unit; //µ¥´Î¿Û·Ñ¿ÉÓÃÁ÷Á¿£¨µ¥Î»:100ml£©
225 uint8 fee_amt; //µ¥´Î¿Û·Ñ½ð¶î£¬ÒÔ·ÖΪµ¥Î»
226} sp_feepara_t;
227
228//¿¨½á¹¹ÐÅÏ¢
229typedef struct
230{
231 uint8 cardphyid[4];
232 uint8 citizen_cardno[12]; //ÊÐÃñºÅ
233 uint8 cardtype;
234 uint8 expiredate[4];
235
zongqiang.zhangdb84c852019-12-09 10:18:01 +0800236 uint16 waterlimit; //µ¥´Î³öË®Á÷Á¿ÉÏÏÞ£¨100ml£©
237 uint16 amountlimit; //µ¥´Î³öË®½ð¶îÉÏÏÞ (·Ö)
238 uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
guangcheng.qin2d6738c2019-09-25 17:38:15 +0800239 uint8 permit; //ÊÇ·ñÔÊÐíÏû·Ñ£¬0-ÔÊÐí£¬1-²»ÔÊÐí
zongqiang.zhang7b2b7b22019-12-06 10:52:18 +0800240 char limitmsg[45]; //ÏÞÖÆÏû·ÑÐÅÏ¢
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800241 sp_qrcode_t qrcode; //¶þάÂë
242 sp_feepara_t feepara;
243} sp_card_t;
244
245#pragma pack(pop)
246
247typedef enum
248{
249 HEART_INIT = 0,
250 HEART_SEND = 1,
251 HEART_RECV = 2
252} sp_heart_status_t;
253
254typedef enum
255{
256 TAG_TYPE_UNKONWN = 0, //δ֪¿¨ÀàÐÍ
257 TAG_TYPE_M1, //M1¿¨
258 TAG_TYPE_CPU //CPU¿¨
259} sp_cardTag_type;
260
261typedef enum
262{
263 STATE_NONE = 0,
264 STATE_EXIST,
265 STATE_ERROR=0xFF
266} sp_cardState_type;
267
268typedef enum
269{
270 CARDWORKSTATUS_NONE = 0,
271 CARDWORKSTATUS_READY,
272 CARDWORKSTATUS_WORKING,
273 CARDWORKSTATUS_WORKING_WITHOUTCARD,
274 CARDWORKSTATUS_PAUSE,
275 CARDWORKSTATUS_STOPPING,
276 CARDWORKSTATUS_STOPPED,
277 CARDWORKSTATUS_TAKEOFF,
278 CARDWORKSTATUS_WORKERROR,
279 CARDWORKSTATUS_FEECARD_WORKING,
280 CARDWORKSTATUS_SET_DEV,
281 CARDWORKSTATUS_ERROR=0xff
282} sp_cardWorkState_type;
283
284#endif