blob: 88dea9b91706072e60ac7489c6ee5104985215c8 [file] [log] [blame]
zongqiang.zhang0c6a0882019-08-07 14:48:21 +08001#include "sp_menu.h"
2#include "sp_util.h"
3#include "sp_data.h"
4#include "stdlib.h"
5#include "stdio.h"
6#include "sp_constant.h"
7#include "sp_communicate.h"
8#include "sp_display.h"
9#include "sp_upgrade.h"
10#include "../nec_hardware.h"
11
12typedef void(*menu_func_t)(sp_pos_t* pos);
13typedef struct
14{
15 char* hit;
16 menu_func_t func;
17} menu_t;
18
19static void sp_show_syspara(sp_pos_t* pos)
20{
21 uint32 ticker;
22 uint8 keycode;
23 uint8 key_press = 1;
24 uint8 max_cnt = 0;
25 uint8 offset = 0;
26 uint8 unconfirm_transnum;
zongqiang.zhang4c4fc802019-11-21 16:11:57 +080027 char syspara[10][17];
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080028
29 MEMCLEAR(syspara, sizeof(syspara));
30 sprintf(syspara[offset++], "É豸״̬:");
31 if(pos->devlogin.login_flag == 1)
32 {
33 sprintf(syspara[offset++], "ÒÑÇ©µ½");
34 }
35 else if(pos->devlogin.login_flag == 0)
36 {
37 sprintf(syspara[offset++], "δǩµ½");
38 }
39 else if(pos->devlogin.login_flag == 2)
40 {
41 sprintf(syspara[offset++], "ÒÑ×¢Ïú");
42 }
43 sprintf(syspara[offset++], "Á´Â·×´Ì¬:");
44 if(pos->link_stat)
45 {
46 sprintf(syspara[offset++], "ÁªÍø");
47 }
48 else
49 {
50 sprintf(syspara[offset++], "ÖжÏ");
51 }
52 sprintf(syspara[offset++], "δÉÏ´«Á÷Ë®:");
53 if(pos->unconfirm_transdtl.transaddr <= pos->last_transdtl.transaddr)
54 {
55 if(pos->unconfirm_transdtl.transaddr == pos->last_transdtl.transaddr)
56 {
57 unconfirm_transnum = 1;
58 }
59 else
60 {
61 unconfirm_transnum = ((pos->last_transdtl.transaddr -
62 pos->unconfirm_transdtl.transaddr)/sizeof(sp_transdtl_t));
63 }
64 }
65 else
66 {
67 unconfirm_transnum = 0;
68 }
69 sprintf(syspara[offset++], "%d±Ê", unconfirm_transnum);
zongqiang.zhang4c4fc802019-11-21 16:11:57 +080070
71 sprintf(syspara[offset++],"Âö³åµ¥Î»¼ÆÊý");
72 sprintf(syspara[offset++],"%d (´Î/100ml)",
zongqiang.zhang91d35d42019-11-21 16:37:24 +080073 ((uint32)pos->sysconf.flowsensor_unit)*1);
zongqiang.zhang4c4fc802019-11-21 16:11:57 +080074
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080075 sprintf(syspara[offset++], "Ïû·ÑÀàÐÍ:");
76 sprintf(syspara[offset++], "¼ÇÕËÏû·Ñ");
77
zongqiang.zhang4c4fc802019-11-21 16:11:57 +080078 max_cnt = (sizeof(syspara)/sizeof(syspara[0]) -1)/2 +1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080079 offset = 0;
80 ticker = sp_get_ticker();
81 while(sp_get_ticker()-ticker <= DELAY_TIME60s)
82 {
83 keycode = sp_get_key();
84 if(keycode != SP_KEY_NONE)
85 {
86 key_press = 1;
87 switch(keycode)
88 {
89 case SP_KEY_0:
90 if(offset < max_cnt-1)
91 {
92 offset++;
93 }
94 break;
95 case SP_KEY_1:
96 case SP_KEY_2:
97 case SP_KEY_3:
98 case SP_KEY_4:
99 case SP_KEY_5:
100 case SP_KEY_6:
101 case SP_KEY_7:
102 case SP_KEY_8:
103 case SP_KEY_9:
104 offset = keycode -SP_KEY_0;
105 if(offset >= max_cnt)
106 {
107 offset = max_cnt -1;
108 }
109 break;
110 case SP_KEY_CLEAR:
111 return;
112 }
113 }
114 if(key_press)
115 {
116 disp_hint_info_two(pos, syspara[2*offset],syspara[2*offset+1],0);
117 key_press = 0;
118 ticker = sp_get_ticker();
119 }
120 }
121}
122
zongqiang.zhang63882752019-11-21 15:21:14 +0800123static void test_link(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800124{
125 uint8 ret;
126 sp_protocol_request_t req;
127 sp_protocol_response_t resp;
128 MEMCLEAR(&req, sizeof(req));
129 MEMCLEAR(&resp, sizeof(resp));
130
131 disp_hint_info_two(pos, "ÕýÔÚÁ´Â·¼ì²â", "ÇëÉÔµÈ.....", 0);
132 sp_protocol_req_init(&req, SP_CMD_FACTORY_LINK_TEST);
133 req.data[0] = 0;
134 req.data[1] = 0x55;
135 req.data[2] = 0xAA;
136 req.datalen += 3;
137 ret = sp_comm_call(pos, &req, &resp, DELAY_TIME3s);
138 if(!ret)
139 {
140 if(resp.data[0] == 0x55 && resp.data[1] == 0xAA)
141 {
zongqiang.zhang6e4e3932019-11-22 09:15:54 +0800142 disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ÊÕµ½Ó¦´ð°ü", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800143 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800144 }
145 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","ÊÕµ½´íÎó°ü", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800146 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800147 }
148 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","Çë¼ì²âÏß·", DELAY_TIME3s);
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800149}
150
151static void show_keyboard_test(sp_pos_t* pos, uint8 offset)
152{
153 char msg[]= {"0123456789C"};
154 char temp[17];
155 snprintf(temp,offset+1,"%s",msg);
156 disp_hint_info_three(pos, "¼üÅÌÒÀ´ÎÊäÈë","0123456789C",temp,0);
157}
158
zongqiang.zhang63882752019-11-21 15:21:14 +0800159static void do_keyboard_calibrate(sp_pos_t* pos)
160{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800161 disp_hint_info_two(pos,"УÑé¼üÅÌ","ÇëÉÔµÈ...",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800162 sp_key_calibrate();
163 disp_hint_info_two(pos, "¼üÅÌУÑéÍê³É","Çë¼ì²â",DELAY_TIME3s);
164}
165
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800166static void do_keyboard_test(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800167{
168 uint8 kcode;
169 uint32 tick;
170 uint8 offset = 0;
171 uint8 keybuf[12]= {SP_KEY_0,SP_KEY_1,SP_KEY_2,SP_KEY_3,
172 SP_KEY_4,SP_KEY_5,SP_KEY_6,SP_KEY_7,
173 SP_KEY_8,SP_KEY_9,SP_KEY_CLEAR,SP_KEY_ENTER
174 };
175 show_keyboard_test(pos, offset);
176 tick = sp_get_ticker();
177 while((sp_get_ticker()-tick) < DELAY_TIME60s)
178 {
179 sp_feed_dog();
180 kcode = sp_get_key();
181 if(kcode != SP_KEY_NONE)
182 {
183 tick = sp_get_ticker();
184 switch(kcode)
185 {
186 case SP_KEY_0:
187 if(keybuf[offset] == SP_KEY_0)
188 {
189 ++offset;
190 show_keyboard_test(pos, offset);
191 }
192 break;
193 case SP_KEY_1:
194 if(keybuf[offset] == SP_KEY_1)
195 {
196 ++offset;
197 show_keyboard_test(pos, offset);
198 }
199 break;
200 case SP_KEY_2:
201 if(keybuf[offset] == SP_KEY_2)
202 {
203 ++offset;
204 show_keyboard_test(pos, offset);
205 }
206 break;
207 case SP_KEY_3:
208 if(keybuf[offset] == SP_KEY_3)
209 {
210 ++offset;
211 show_keyboard_test(pos, offset);
212 }
213 break;
214 case SP_KEY_4:
215 if(keybuf[offset] == SP_KEY_4)
216 {
217 ++offset;
218 show_keyboard_test(pos, offset);
219 }
220 break;
221 case SP_KEY_5:
222 if(keybuf[offset] == SP_KEY_5)
223 {
224 ++offset;
225 show_keyboard_test(pos, offset);
226 }
227 break;
228 case SP_KEY_6:
229 if(keybuf[offset] == SP_KEY_6)
230 {
231 ++offset;
232 show_keyboard_test(pos, offset);
233 }
234 break;
235 case SP_KEY_7:
236 if(keybuf[offset] == SP_KEY_7)
237 {
238 ++offset;
239 show_keyboard_test(pos, offset);
240 }
241 break;
242 case SP_KEY_8:
243 if(keybuf[offset] == SP_KEY_8)
244 {
245 ++offset;
246 show_keyboard_test(pos, offset);
247 }
248 break;
249 case SP_KEY_9:
250 if(keybuf[offset] == SP_KEY_9)
251 {
252 ++offset;
253 show_keyboard_test(pos, offset);
254 }
255 break;
256 case SP_KEY_CLEAR:
257 if(offset == 0)
258 {
259 disp_hint_info(pos, "È¡Ïû°´¼ü¼ì²â",DELAY_TIME2s);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800260 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800261 }
262 if(keybuf[offset] == SP_KEY_CLEAR)
263 {
264 ++offset;
265 show_keyboard_test(pos, offset);
266 }
267 break;
268 case SP_KEY_ENTER:
269 if(keybuf[offset] == SP_KEY_ENTER)
270 {
271 disp_hint_info_two(pos, "¼üÅ̼ì²âÕýÈ·","¼üÅÌУ׼Õý³£",DELAY_TIME3s);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800272 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800273 }
274 break;
275 default:
276 break;
277 }
278 }
279 }
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800280}
281
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800282static void sp_set_devtime(sp_pos_t* pos)
283{
284 uint32 ticker;
285 uint8 kcode;
286 uint8 key_press = 1;
287 uint8 ctime[6];
288 uint8 offset;
289 char str[13];
290 char msg[17];
291
292 MEMCLEAR(str,sizeof str);
293 sp_get_bcdtime(ctime);
294 offset = 10;
295 sp_hex_to_str(ctime,5,str);
296 ticker = sp_get_ticker();
297 while(sp_get_ticker() -ticker < DELAY_TIME60s)
298 {
299 kcode = sp_get_key();
300 if(kcode != SP_KEY_NONE)
301 {
302 key_press = 1;
303 switch(kcode)
304 {
305 case SP_KEY_0:
306 case SP_KEY_1:
307 case SP_KEY_2:
308 case SP_KEY_3:
309 case SP_KEY_4:
310 case SP_KEY_5:
311 case SP_KEY_6:
312 case SP_KEY_7:
313 case SP_KEY_8:
314 case SP_KEY_9:
315 if(offset < 10)
316 {
317 str[offset++] = '0' + (kcode- SP_KEY_0);
318 }
319 break;
320 case SP_KEY_ENTER:
321 if(offset >= 10)
322 {
323 MEMCLEAR(ctime,sizeof ctime);
324 sp_str_to_bcd(str,10,ctime);
325 if(sp_check_time_valid(ctime))
326 {
327 disp_hint_info_two(pos,"ÉèÖÃʱ¼äʧ°Ü","ʱ¼ä²»ºÏ·¨", DELAY_TIME3s);
328 }
329 else
330 {
331 sp_set_bcdtime(ctime);
332 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä³É¹¦"," ", DELAY_TIME2s);
333 return;
334 }
335 }
336 break;
337 case SP_KEY_CLEAR:
338 if(offset == 0)
339 {
340 return;
341 }
342 offset--;
343 str[offset] = 0;
344 break;
345 }
346 }
347 if(key_press)
348 {
349 sprintf(msg,"%s",str);
350 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä(ymdHm)",msg,0);
351 ticker = sp_get_ticker();
352 key_press = 0;
353 }
354 }
355}
356
357static void sp_manual_login(sp_pos_t* pos)
358{
359 uint16 ret;
360 uint32 tick;
361 sp_protocol_response_t resp;
362 MEMCLEAR(&resp, sizeof(resp));
363 disp_hint_info_two(pos,"ÕýÔڵǼ","ÇëÉÔµÈ...",0);
364 sp_async_equipment_login(pos);
365 tick = sp_get_ticker();
366 while(sp_get_ticker() - tick < DELAY_TIME3s*2)
367 {
368 MEMCLEAR(&resp, sizeof(resp));
369 usart_read((u8*)&resp, sizeof(resp));
370 if(resp.excmd == SP_CMD_LOGIN)
371 {
372 ret = sp_confirm_login(&resp, pos);
373 break;
374 }
375 else
376 {
377 ret = RC_DEV_LOGIN_FAIL;
378 }
379 }
380 if(ret)
381 {
382 char msg[32];
383 sprintf(msg,"´íÎóÂë=%d",ret);
384 disp_hint_info_two(pos,"Ç©µ½Ê§°Ü",msg,DELAY_TIME3s);
385 }
386 else
387 {
388 disp_hint_info(pos,"Ç©µ½³É¹¦",DELAY_TIME3s);
389 }
390}
391
392static void sp_set_devphyid(sp_pos_t* pos)
393{
394 uint32 ticker;
395 uint8 kcode;
396 uint16 ret = 0;
397 uint8 key_press = 1;
398 char msg[17];
399 uint8 devphyid[4];
400 uint8 offset;
401 char str[9];
402 MEMCPY(devphyid,pos->devphyid,sizeof(pos->devphyid));
403 MEMCLEAR(str,sizeof str);
404
405 ticker = sp_get_ticker();
406 offset = 8;
407 sp_hex_to_str(devphyid,4,str);
408 while(sp_get_ticker() -ticker < DELAY_TIME60s)
409 {
410 kcode = sp_get_key();
411 if(kcode != SP_KEY_NONE)
412 {
413 key_press = 1;
414 switch(kcode)
415 {
416 case SP_KEY_0:
417 case SP_KEY_1:
418 case SP_KEY_2:
419 case SP_KEY_3:
420 case SP_KEY_4:
421 case SP_KEY_5:
422 case SP_KEY_6:
423 case SP_KEY_7:
424 case SP_KEY_8:
425 case SP_KEY_9:
426 if(offset < 8)
427 {
428 str[offset++] = '0' +(kcode -SP_KEY_0);
429 }
430 break;
431 case SP_KEY_ENTER:
432 if(offset >= 8)
433 {
434 sp_str_to_hex(str,8,devphyid);
435 if(0 != MEMCMP(pos->devphyid,devphyid,4))
436 {
437 ret = sp_save_devphyid(pos, devphyid);
438 }
439 if(!ret)
440 {
441 MEMCPY(pos->devphyid,devphyid,4);
442 sprintf(msg,"ID: %02x%02x%02x%02x",devphyid[0],devphyid[1],devphyid[2],devphyid[3]);
443 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID³É¹¦",msg, DELAY_TIME2s);
444 }
445 else
446 {
447 show_error(pos,"±£´æÎïÀíIDʧ°Ü",ret);
448 }
449 return;
450 }
451 break;
452 case SP_KEY_CLEAR:
453 if(offset > 0)
454 {
455 offset--;
456 str[offset] = 0;
457 }
458 else
459 {
460 return;
461 }
462 break;
463 }
464 }
465 if(key_press)
466 {
467 sprintf(msg,"%s",str);
468 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID:",msg,0);
469 ticker = sp_get_ticker();
470 key_press = 0;
471 }
472 }
473 return;
474}
475static void sp_set_deviceno(sp_pos_t* pos)
476{
477 uint32 ticker;
478 uint8 kcode;
479 uint16 ret = 0;
480 uint8 key_press = 1;
481 uint16 tempno;
482 uint8 deviceno = pos->deviceno;
483 char msg[17];
484 char temp[17];
485 ticker = sp_get_ticker();
486 while(sp_get_ticker() -ticker < DELAY_TIME60s)
487 {
488 kcode = sp_get_key();
489 if(kcode != SP_KEY_NONE)
490 {
491 key_press = 1;
492 switch(kcode)
493 {
494 case SP_KEY_0:
495 case SP_KEY_1:
496 case SP_KEY_2:
497 case SP_KEY_3:
498 case SP_KEY_4:
499 case SP_KEY_5:
500 case SP_KEY_6:
501 case SP_KEY_7:
502 case SP_KEY_8:
503 case SP_KEY_9:
504 tempno = (uint16)deviceno;
505 tempno *=10;
506 tempno += (kcode-SP_KEY_0);
507 if(tempno > 0 && tempno < DEV_MAX_DEVICENO)
508 {
509 deviceno = (uint8)tempno;
510 }
511 break;
512 case SP_KEY_ENTER:
513 if(deviceno > 0 && deviceno <= DEV_MAX_DEVICENO)
514 {
515 if(pos->deviceno != deviceno)
516 {
517 ret = sp_save_deviceno(pos,deviceno);
518 }
519 if(!ret)
520 {
521 pos->deviceno = deviceno;
522 sprintf(msg,"»úºÅ: %d",deviceno);
523 disp_hint_info_two(pos,"ÉèÖûúºÅ³É¹¦",msg, DELAY_TIME2s);
524 }
525 else
526 {
527 show_error(pos,"±£´æ»úºÅʧ°Ü",ret);
528 }
529 return;
530 }
531 else
532 {
533 sprintf(msg,"·¶Î§(1-%d)",DEV_MAX_DEVICENO);
534 disp_hint_info_two(pos,"»úºÅ´íÎó",msg, DELAY_TIME3s);
535 }
536 case SP_KEY_CLEAR:
537 if(deviceno == 0)
538 {
539 return;
540 }
541 deviceno = 0;
542 break;
543 }
544 }
545 if(key_press)
546 {
547 sprintf(temp,"ÉèÖûúºÅ(1-%d)",DEV_MAX_DEVICENO);
548 sprintf(msg,"%d",deviceno);
549 disp_hint_info_two(pos,temp,msg,0);
550 ticker = sp_get_ticker();
551 key_press = 0;
552 }
553 }
554 return;
555}
556
557static void clear_transdtl(sp_pos_t* pos)
558{
559 if(0 == sp_check_passwd(pos,"Çå¿ÕÁ÷Ë®ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
560 {
561 disp_hint_info_two(pos,"Çå¿ÕÁ÷Ë®","ÇëÉÔµÈ...",0);
562 sp_clear_transdtl(pos);
563 }
564}
565
566static void manual_upgrade(sp_pos_t* pos)
567{
568 if(0 == sp_check_passwd(pos, "ÔÚÏßÉý¼¶ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
569 {
570 sp_manual_upgrade(pos);
571 }
572}
573
574static void reset_factory(sp_pos_t* pos)
575{
576 if(0 == sp_check_passwd(pos, "»Ö¸´³ö³§ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
577 {
578 sp_reset_factory(pos);
579 }
580}
581
zongqiang.zhang63882752019-11-21 15:21:14 +0800582static void test_valve_on(sp_pos_t* pos)
583{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800584 sp_valve_on();
585 disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","ÇëÈ·ÈÏ",DELAY_TIME2s);
586}
587
588static void test_valve_off(sp_pos_t* pos)
589{
590 sp_valve_off();
591 disp_hint_info_two(pos,"·§ÃÅÒѹرÕ","ÇëÈ·ÈÏ",DELAY_TIME3s);
592}
593static void test_flowsensor(sp_pos_t* pos)
594{
zongqiang.zhang63882752019-11-21 15:21:14 +0800595 uint32 ticker;
596 uint8 kcode;
597 uint32 count;
598 uint32 temp;
599 char msg[32];
600
zongqiang.zhang63882752019-11-21 15:21:14 +0800601 sp_flowsensor_count_clear();
602 sp_valve_on();
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800603 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ","ÇëÈ·ÈÏ",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800604 count = 0;
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800605 ticker = sp_get_ticker();
zongqiang.zhang63882752019-11-21 15:21:14 +0800606 while(sp_get_ticker() -ticker < DELAY_TIME60s)
607 {
608 sp_valve_control();
609 kcode = sp_get_key();
610 if(kcode != SP_KEY_NONE)
611 {
612 if(kcode == SP_KEY_CLEAR)
613 {
614 return;
615 }
616 ticker = sp_get_ticker();
617 }
618 temp = sp_flowsensor_get_count();
619 if(temp != count)
620 {
621 count = temp;
622 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800623 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ",msg,DELAY_TIME100ms);
zongqiang.zhang63882752019-11-21 15:21:14 +0800624 }
625 }
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800626 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",sp_flowsensor_get_count());
627 disp_hint_info_two(pos,"Á÷Á¿²âÊÔ½áÊø",msg,DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800628}
629
630static void test_factory_options(sp_pos_t* pos)
631{
632 uint32 ticker = 0;
633 uint8 keycode;
634 uint8 page;
635 uint8 max_cnt;
636 uint8 key_press = 1;
637
638 menu_t menus[] =
639 {
640 {"1.°´¼üУ׼", do_keyboard_calibrate},
641 {"2.°´¼ü²âÊÔ", do_keyboard_test},
642 {"3.¿ªÆô·§ÃÅ", test_valve_on},
643 {"4.¹Ø±Õ·§ÃÅ", test_valve_off},
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800644 {"5.Á÷Á¿²âÊÔ", test_flowsensor},
645 {"6.ͨѶ²âÊÔ", test_link}
zongqiang.zhang63882752019-11-21 15:21:14 +0800646 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800647 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800648 page = 0;
649 ticker = sp_get_ticker();
650 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
651 {
652 sp_feed_dog();
653 keycode = sp_get_key();
654 if(keycode != SP_KEY_NONE)
655 {
656 key_press = 1;
657 switch(keycode)
658 {
659 case SP_KEY_0:
660 if(page < (max_cnt-1))
661 {
662 page++;
663 }
664 break;
665 case SP_KEY_1:
666 case SP_KEY_2:
667 case SP_KEY_3:
668 case SP_KEY_4:
669 case SP_KEY_5:
670 case SP_KEY_6:
671 case SP_KEY_7:
672 case SP_KEY_8:
673 case SP_KEY_9:
674 if(menus[keycode-SP_KEY_1].func != NULL)
675 {
676 menus[keycode-SP_KEY_1].func(pos);
677 }
678 break;
679 case SP_KEY_CLEAR:
680 if(page == 0)
681 {
682 return;
683 }
684 page--;
685 break;
686 default:
687 break;
688 }
689 }
690 if(key_press)
691 {
692 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
693 key_press = 0;
694 ticker = sp_get_ticker();
695 }
696 }
697}
698
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800699void sp_menu_options(sp_pos_t* pos)
700{
701 uint32 ticker = 0;
702 uint8 keycode;
703 uint8 page;
704 uint8 max_cnt;
705 uint8 key_press = 1;
706
707 menu_t menus[] =
708 {
709 {"1.²é¿´²ÎÊý", sp_show_syspara},
zongqiang.zhang63882752019-11-21 15:21:14 +0800710 {"2.¹¤³§²âÊÔ", test_factory_options},
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800711 {"3.ÉèÖÃʱ¼ä", sp_set_devtime},
712 {"4.ÊÖ¶¯µÇ¼", sp_manual_login},
713 {"5.ÉèÖÃÎïÀíid", sp_set_devphyid},
714 {"6.ÉèÖûúºÅ", sp_set_deviceno},
715 {"7.Çå¿ÕÁ÷Ë®", clear_transdtl},
716 {"8.ÔÚÏßÉý¼¶", manual_upgrade},
717 {"9.»Ö¸´³ö³§", reset_factory}
718 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800719 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800720 page = 0;
721 ticker = sp_get_ticker();
722 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
723 {
724 sp_feed_dog();
725 keycode = sp_get_key();
726 if(keycode != SP_KEY_NONE)
727 {
728 key_press = 1;
729 switch(keycode)
730 {
731 case SP_KEY_0:
732 if(page < (max_cnt-1))
733 {
734 page++;
735 }
736 break;
737 case SP_KEY_1:
738 case SP_KEY_2:
739 case SP_KEY_3:
740 case SP_KEY_4:
741 case SP_KEY_5:
742 case SP_KEY_6:
743 case SP_KEY_7:
744 case SP_KEY_8:
745 case SP_KEY_9:
746 if(menus[keycode-SP_KEY_1].func != NULL)
747 {
748 menus[keycode-SP_KEY_1].func(pos);
749 }
750 break;
751 case SP_KEY_CLEAR:
752 if(page == 0)
753 {
754 return;
755 }
756 page--;
757 break;
758 default:
759 break;
760 }
761 }
762 if(key_press)
763 {
764 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
765 key_press = 0;
766 ticker = sp_get_ticker();
767 }
768 }
769}
zongqiang.zhang63882752019-11-21 15:21:14 +0800770
771