blob: 60065ad9e6261ec5ff0a55f1d2a5f14db3e1daf6 [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
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800106 uint8 cardno[4]; //ÊÐÃñ¿¨ºÅ
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800107 uint8 transway; //½»Ò×·½Ê½£¬0-³õʼ£¬1-Ë¢¿¨£¬2-ɨÂë
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800108 uint32 amount; //ʵ¼ÊÖ§¸¶½ð¶î
109 uint32 paidAmount; //ÒÑÖ§¸¶½ð¶î£¬µ±ÊÇÏȿ۷ÑģʽÏ£¬¼Ç¼ÒÑÖ§¸¶µÄ½ð¶î
110 uint32 flowsensors; //ʵ¼ÊʹÓüÆÁ¿£¨µ¥Î»£º°ÙºÁÉý£©
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800111 uint8 transtatus; //Á÷ˮ״̬£¬0-³õʼ£¬1-³É¹¦£¬2-ʧ°Ü
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800112 uint8 unused[26]; //ռλ·û
113 uint8 crc[2]; //len=64
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800114} sp_transdtl_t;
115
116typedef struct
117{
118 uint8 offline_work_hour; //ÔÊÐíÍÑ»ú¹¤×÷×î´óСʱ 0 ~ 168 Сʱ£¬0 ±íʾ²»ÏÞÖÆ
119 uint8 deviceno; //»úºÅ
120 uint8 devphyid[4]; //ÎïÀíID
121 uint8 flowsensor_unit; // 100ml¶ÔÓ¦Âö³åÊý
122 uint8 unused[54];
123 uint8 login_flag; //0-δǩµ½£¬1-ÒÑÇ©µ½£¬2-ÒÑ×¢Ïú
124 uint8 crc[2];
125} sp_config_t;
126
127typedef struct
128{
129 uint32 transaddr; //µØÖ·
130 uint16 this_offset; //Ò³Æ«ÒÆÎ»
131 uint8 crc[2]; //len=8
132} sp_last_transdtl_t;
133
134typedef struct
135{
136 uint32 transaddr; //µØÖ·
137 uint16 this_offset; //Ò³Æ«ÒÆÎ»
138 uint8 crc[2]; //len=8
139} sp_unconfirm_transdtl_t;
140
141//Ïû·ÑÐÅÏ¢
142typedef struct
143{
144 uint32 free_used_num; //ÒÑÃâ·ÑʹÓüÆÁ¿(µ¥Î»:100ml)
145
146 uint8 starttime[6]; //Ë¢¿¨Ê±¼ä
147 /*Ïȿۿîºó³öË®*/
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800148 uint32 prepaid_num; //µ¥´Î¿ÉÓüÆÁ¿(µ¥Î»:100ml)
149 uint32 prepaid_amt; //µ¥´ÎÔ¤¸¶½ðÇ®(µ¥Î»:Àå)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800150
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800151 uint32 paid_num; //ÀۼƿÉÓüÆÁ¿(µ¥Î»:100ml)
152 uint32 paid_sum; //ÀÛ¼ÆÖ§¸¶½ð¶î(µ¥Î»:Àå)
153 uint32 used_num; //ÒÑʹÓüÆÁ¿(µ¥Î»:100ml)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800154} sp_purchase_t;
155
156//¶þάÂëÐÅÏ¢
157typedef struct
158{
159 char qrcode_url[32]; ///¶þάÂë¶ÌÂë
160 uint32 starttime; //¶þάÂ뿪ʼʱ¼ä
161 uint32 nowtime; //¶þάÂ뵱ǰʱ¼ä
162 uint32 validtime; //¶þάÂëÓÐЧʱ¼ä
zongqiang.zhangb65f1242019-12-10 16:08:16 +0800163 uint32 waittime; //³öË®µÈ´ýʱ¼ä
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800164 uint8 authstatus; //Óû§È·ÈÏ״̬£¨0-δȷÈÏ£¬1-ÒÑÈ·ÈÏ£©
165 uint8 paystatus; //Ö§¸¶×´Ì¬£¨0-´ýÖ§¸¶£¬ 1-ÒÑÖ§¸¶£¬ 2-´ú¿Û£¬3 - ¹Ø±Õ£©
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800166 uint32 paidAmount; //µ±¶©µ¥ÊÇÒÑÖ§¸¶×´Ì¬£¬·µ»ØÖ§¸¶³É¹¦½ð¶î £¬ ·ñÔòÊÇ 0
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800167} sp_qrcode_t;
168
169//É豸²ÎÊý
170typedef struct
171{
172 uint8 dev_offline_maxhour; //É豸ÍÑ»ú×î´ó¹¤×÷ʱ¼ä(Сʱ),0-²»ÏÞÖÆ,168-ĬÈÏʱ¼ä
173 uint8 flowsensor_unit; //100ml¶ÔÓ¦Âö³åÊý
174 uint8 hwVer[16]; //É豸°æ±¾ºÅ
175 uint8 deviceKey[8]; //É豸¹¤×÷ÃØÔ¿
176 uint8 work_mode; //É豸¹¤×÷״̬
177} sp_sysconf_t;
178
179
180typedef struct
181{
182 uint8 tag_type;
183 uint8 cur_state;
184 uint8 snr[8];
185 uint32 firsttick; //Ê״ζÁ¿¨Ê±¼ä
186 uint32 lasttick; //×îºó¶Á¿¨Ê±¼ä
187} sp_cardstate_t;
188
189typedef struct
190{
191 uint8 current_state; //µ±Ç°¹¤×÷״̬
192 uint16 errcode;
193 uint32 tick;
194 uint8 last_state; //ÉÏÒ»´Î״̬
195
196 uint8 pause_status; //Óû§Ê¹ÓÃ״̬£¬0--ʹÓÃÖУ¬!0--ÔÝÍ£
197 uint32 pause_tick; //ÔÝͣʱµÄʱ¼ä
198} sp_cardworkstate_t;
199
200//Ë®¿ØÆ÷É豸ÐÅÏ¢
201typedef struct
202{
203 uint8 link_stat; //0--Á´Â·¹¤×÷ÖУ¬1---Á´Â·¿ÉÓÃ
204 uint8 load_para_status; //0--Õý³££¬!0--´íÎó
205 uint8 deviceno;
guangcheng.qin00668842019-08-19 09:45:25 +0800206 uint8 local_deviceno;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800207 uint8 devphyid[4];
zongqiang.zhang39f669b2019-12-17 10:11:14 +0800208 uint8 errmsg[32]; //Áª»úºǫ́·µ»Ø´íÎóÐÅÏ¢
209 uint16 errmsglen;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800210
211 sp_cardstate_t cardState;
212 sp_sysconf_t sysconf;
213 sp_comm_status_t last_comm_status;
214 sp_heartbeat_t heartbeat;
215 sp_login_t devlogin;
216 sp_last_transdtl_t last_transdtl;
217 sp_unconfirm_transdtl_t unconfirm_transdtl;
218
219 sp_paymode_e paymode;
220 sp_purchase_t purchase;
221} sp_pos_t;
222
223//·ÑÂÊÐÅÏ¢
224typedef struct
225{
226 uint8 fee_start; //T°ÙºÁÉý¿ªÊ¼;
227 uint8 fee_unit; //µ¥´Î¿Û·Ñ¿ÉÓÃÁ÷Á¿£¨µ¥Î»:100ml£©
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800228 uint8 fee_amt; //µ¥´Î¿Û·Ñ½ð¶î£¬ÒÔÀåΪµ¥Î»
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800229} sp_feepara_t;
230
231//¿¨½á¹¹ÐÅÏ¢
232typedef struct
233{
234 uint8 cardphyid[4];
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800235 uint8 citizen_cardno[4]; //ÊÐÃñºÅ
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800236 uint8 cardtype;
237 uint8 expiredate[4];
238
zongqiang.zhang60427fc2020-08-03 18:16:14 +0800239 uint32 waterlimit; //µ¥´Î³öË®Á÷Á¿ÉÏÏÞ£¨100ml£©
240 uint32 amountlimit; //µ¥´Î³öË®½ð¶îÉÏÏÞ (Àå)
zongqiang.zhangdb84c852019-12-09 10:18:01 +0800241 uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
guangcheng.qin2d6738c2019-09-25 17:38:15 +0800242 uint8 permit; //ÊÇ·ñÔÊÐíÏû·Ñ£¬0-ÔÊÐí£¬1-²»ÔÊÐí
zongqiang.zhang7b2b7b22019-12-06 10:52:18 +0800243 char limitmsg[45]; //ÏÞÖÆÏû·ÑÐÅÏ¢
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800244 sp_qrcode_t qrcode; //¶þάÂë
245 sp_feepara_t feepara;
246} sp_card_t;
247
248#pragma pack(pop)
249
250typedef enum
251{
252 HEART_INIT = 0,
253 HEART_SEND = 1,
254 HEART_RECV = 2
255} sp_heart_status_t;
256
257typedef enum
258{
259 TAG_TYPE_UNKONWN = 0, //δ֪¿¨ÀàÐÍ
260 TAG_TYPE_M1, //M1¿¨
261 TAG_TYPE_CPU //CPU¿¨
262} sp_cardTag_type;
263
264typedef enum
265{
266 STATE_NONE = 0,
267 STATE_EXIST,
268 STATE_ERROR=0xFF
269} sp_cardState_type;
270
271typedef enum
272{
273 CARDWORKSTATUS_NONE = 0,
274 CARDWORKSTATUS_READY,
275 CARDWORKSTATUS_WORKING,
276 CARDWORKSTATUS_WORKING_WITHOUTCARD,
277 CARDWORKSTATUS_PAUSE,
278 CARDWORKSTATUS_STOPPING,
279 CARDWORKSTATUS_STOPPED,
280 CARDWORKSTATUS_TAKEOFF,
281 CARDWORKSTATUS_WORKERROR,
282 CARDWORKSTATUS_FEECARD_WORKING,
283 CARDWORKSTATUS_SET_DEV,
284 CARDWORKSTATUS_ERROR=0xff
285} sp_cardWorkState_type;
286
287#endif