blob: 7ab685e7762a784ace682357e661363769889b07 [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;
27 char syspara[9][17];
28
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);
70 sprintf(syspara[offset++], "Ïû·ÑÀàÐÍ:");
71 sprintf(syspara[offset++], "¼ÇÕËÏû·Ñ");
72
73 max_cnt = sizeof(syspara)/sizeof(syspara[0])/2;
74 offset = 0;
75 ticker = sp_get_ticker();
76 while(sp_get_ticker()-ticker <= DELAY_TIME60s)
77 {
78 keycode = sp_get_key();
79 if(keycode != SP_KEY_NONE)
80 {
81 key_press = 1;
82 switch(keycode)
83 {
84 case SP_KEY_0:
85 if(offset < max_cnt-1)
86 {
87 offset++;
88 }
89 break;
90 case SP_KEY_1:
91 case SP_KEY_2:
92 case SP_KEY_3:
93 case SP_KEY_4:
94 case SP_KEY_5:
95 case SP_KEY_6:
96 case SP_KEY_7:
97 case SP_KEY_8:
98 case SP_KEY_9:
99 offset = keycode -SP_KEY_0;
100 if(offset >= max_cnt)
101 {
102 offset = max_cnt -1;
103 }
104 break;
105 case SP_KEY_CLEAR:
106 return;
107 }
108 }
109 if(key_press)
110 {
111 disp_hint_info_two(pos, syspara[2*offset],syspara[2*offset+1],0);
112 key_press = 0;
113 ticker = sp_get_ticker();
114 }
115 }
116}
117
zongqiang.zhang63882752019-11-21 15:21:14 +0800118static void test_link(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800119{
120 uint8 ret;
121 sp_protocol_request_t req;
122 sp_protocol_response_t resp;
123 MEMCLEAR(&req, sizeof(req));
124 MEMCLEAR(&resp, sizeof(resp));
125
126 disp_hint_info_two(pos, "ÕýÔÚÁ´Â·¼ì²â", "ÇëÉÔµÈ.....", 0);
127 sp_protocol_req_init(&req, SP_CMD_FACTORY_LINK_TEST);
128 req.data[0] = 0;
129 req.data[1] = 0x55;
130 req.data[2] = 0xAA;
131 req.datalen += 3;
132 ret = sp_comm_call(pos, &req, &resp, DELAY_TIME3s);
133 if(!ret)
134 {
135 if(resp.data[0] == 0x55 && resp.data[1] == 0xAA)
136 {
137 if(sp_check_time_valid(resp.data +2))
138 {
139 disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ʱÖÓ²»ºÏ·¨", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800140 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800141 }
142 sp_set_bcdtime(resp.data +2);
143 disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ÒÑͬ²½Ê±ÖÓ", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800144 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800145 }
146 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","ÊÕµ½´íÎó°ü", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800147 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800148 }
149 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","Çë¼ì²âÏß·", DELAY_TIME3s);
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800150}
151
152static void show_keyboard_test(sp_pos_t* pos, uint8 offset)
153{
154 char msg[]= {"0123456789C"};
155 char temp[17];
156 snprintf(temp,offset+1,"%s",msg);
157 disp_hint_info_three(pos, "¼üÅÌÒÀ´ÎÊäÈë","0123456789C",temp,0);
158}
159
zongqiang.zhang63882752019-11-21 15:21:14 +0800160static void do_keyboard_calibrate(sp_pos_t* pos)
161{
162 disp_hint_info_two("УÑé¼üÅÌ","ÇëÉÔµÈ...",0);
163 sp_key_calibrate();
164 disp_hint_info_two(pos, "¼üÅÌУÑéÍê³É","Çë¼ì²â",DELAY_TIME3s);
165}
166
167static uint8 do_keyboard_test(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800168{
169 uint8 kcode;
170 uint32 tick;
171 uint8 offset = 0;
172 uint8 keybuf[12]= {SP_KEY_0,SP_KEY_1,SP_KEY_2,SP_KEY_3,
173 SP_KEY_4,SP_KEY_5,SP_KEY_6,SP_KEY_7,
174 SP_KEY_8,SP_KEY_9,SP_KEY_CLEAR,SP_KEY_ENTER
175 };
176 show_keyboard_test(pos, offset);
177 tick = sp_get_ticker();
178 while((sp_get_ticker()-tick) < DELAY_TIME60s)
179 {
180 sp_feed_dog();
181 kcode = sp_get_key();
182 if(kcode != SP_KEY_NONE)
183 {
184 tick = sp_get_ticker();
185 switch(kcode)
186 {
187 case SP_KEY_0:
188 if(keybuf[offset] == SP_KEY_0)
189 {
190 ++offset;
191 show_keyboard_test(pos, offset);
192 }
193 break;
194 case SP_KEY_1:
195 if(keybuf[offset] == SP_KEY_1)
196 {
197 ++offset;
198 show_keyboard_test(pos, offset);
199 }
200 break;
201 case SP_KEY_2:
202 if(keybuf[offset] == SP_KEY_2)
203 {
204 ++offset;
205 show_keyboard_test(pos, offset);
206 }
207 break;
208 case SP_KEY_3:
209 if(keybuf[offset] == SP_KEY_3)
210 {
211 ++offset;
212 show_keyboard_test(pos, offset);
213 }
214 break;
215 case SP_KEY_4:
216 if(keybuf[offset] == SP_KEY_4)
217 {
218 ++offset;
219 show_keyboard_test(pos, offset);
220 }
221 break;
222 case SP_KEY_5:
223 if(keybuf[offset] == SP_KEY_5)
224 {
225 ++offset;
226 show_keyboard_test(pos, offset);
227 }
228 break;
229 case SP_KEY_6:
230 if(keybuf[offset] == SP_KEY_6)
231 {
232 ++offset;
233 show_keyboard_test(pos, offset);
234 }
235 break;
236 case SP_KEY_7:
237 if(keybuf[offset] == SP_KEY_7)
238 {
239 ++offset;
240 show_keyboard_test(pos, offset);
241 }
242 break;
243 case SP_KEY_8:
244 if(keybuf[offset] == SP_KEY_8)
245 {
246 ++offset;
247 show_keyboard_test(pos, offset);
248 }
249 break;
250 case SP_KEY_9:
251 if(keybuf[offset] == SP_KEY_9)
252 {
253 ++offset;
254 show_keyboard_test(pos, offset);
255 }
256 break;
257 case SP_KEY_CLEAR:
258 if(offset == 0)
259 {
260 disp_hint_info(pos, "È¡Ïû°´¼ü¼ì²â",DELAY_TIME2s);
261 return 1;
262 }
263 if(keybuf[offset] == SP_KEY_CLEAR)
264 {
265 ++offset;
266 show_keyboard_test(pos, offset);
267 }
268 break;
269 case SP_KEY_ENTER:
270 if(keybuf[offset] == SP_KEY_ENTER)
271 {
272 disp_hint_info_two(pos, "¼üÅ̼ì²âÕýÈ·","¼üÅÌУ׼Õý³£",DELAY_TIME3s);
273 return 0;
274 }
275 break;
276 default:
277 break;
278 }
279 }
280 }
281 return 1;
282
283}
284
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800285static void sp_set_devtime(sp_pos_t* pos)
286{
287 uint32 ticker;
288 uint8 kcode;
289 uint8 key_press = 1;
290 uint8 ctime[6];
291 uint8 offset;
292 char str[13];
293 char msg[17];
294
295 MEMCLEAR(str,sizeof str);
296 sp_get_bcdtime(ctime);
297 offset = 10;
298 sp_hex_to_str(ctime,5,str);
299 ticker = sp_get_ticker();
300 while(sp_get_ticker() -ticker < DELAY_TIME60s)
301 {
302 kcode = sp_get_key();
303 if(kcode != SP_KEY_NONE)
304 {
305 key_press = 1;
306 switch(kcode)
307 {
308 case SP_KEY_0:
309 case SP_KEY_1:
310 case SP_KEY_2:
311 case SP_KEY_3:
312 case SP_KEY_4:
313 case SP_KEY_5:
314 case SP_KEY_6:
315 case SP_KEY_7:
316 case SP_KEY_8:
317 case SP_KEY_9:
318 if(offset < 10)
319 {
320 str[offset++] = '0' + (kcode- SP_KEY_0);
321 }
322 break;
323 case SP_KEY_ENTER:
324 if(offset >= 10)
325 {
326 MEMCLEAR(ctime,sizeof ctime);
327 sp_str_to_bcd(str,10,ctime);
328 if(sp_check_time_valid(ctime))
329 {
330 disp_hint_info_two(pos,"ÉèÖÃʱ¼äʧ°Ü","ʱ¼ä²»ºÏ·¨", DELAY_TIME3s);
331 }
332 else
333 {
334 sp_set_bcdtime(ctime);
335 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä³É¹¦"," ", DELAY_TIME2s);
336 return;
337 }
338 }
339 break;
340 case SP_KEY_CLEAR:
341 if(offset == 0)
342 {
343 return;
344 }
345 offset--;
346 str[offset] = 0;
347 break;
348 }
349 }
350 if(key_press)
351 {
352 sprintf(msg,"%s",str);
353 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä(ymdHm)",msg,0);
354 ticker = sp_get_ticker();
355 key_press = 0;
356 }
357 }
358}
359
360static void sp_manual_login(sp_pos_t* pos)
361{
362 uint16 ret;
363 uint32 tick;
364 sp_protocol_response_t resp;
365 MEMCLEAR(&resp, sizeof(resp));
366 disp_hint_info_two(pos,"ÕýÔڵǼ","ÇëÉÔµÈ...",0);
367 sp_async_equipment_login(pos);
368 tick = sp_get_ticker();
369 while(sp_get_ticker() - tick < DELAY_TIME3s*2)
370 {
371 MEMCLEAR(&resp, sizeof(resp));
372 usart_read((u8*)&resp, sizeof(resp));
373 if(resp.excmd == SP_CMD_LOGIN)
374 {
375 ret = sp_confirm_login(&resp, pos);
376 break;
377 }
378 else
379 {
380 ret = RC_DEV_LOGIN_FAIL;
381 }
382 }
383 if(ret)
384 {
385 char msg[32];
386 sprintf(msg,"´íÎóÂë=%d",ret);
387 disp_hint_info_two(pos,"Ç©µ½Ê§°Ü",msg,DELAY_TIME3s);
388 }
389 else
390 {
391 disp_hint_info(pos,"Ç©µ½³É¹¦",DELAY_TIME3s);
392 }
393}
394
395static void sp_set_devphyid(sp_pos_t* pos)
396{
397 uint32 ticker;
398 uint8 kcode;
399 uint16 ret = 0;
400 uint8 key_press = 1;
401 char msg[17];
402 uint8 devphyid[4];
403 uint8 offset;
404 char str[9];
405 MEMCPY(devphyid,pos->devphyid,sizeof(pos->devphyid));
406 MEMCLEAR(str,sizeof str);
407
408 ticker = sp_get_ticker();
409 offset = 8;
410 sp_hex_to_str(devphyid,4,str);
411 while(sp_get_ticker() -ticker < DELAY_TIME60s)
412 {
413 kcode = sp_get_key();
414 if(kcode != SP_KEY_NONE)
415 {
416 key_press = 1;
417 switch(kcode)
418 {
419 case SP_KEY_0:
420 case SP_KEY_1:
421 case SP_KEY_2:
422 case SP_KEY_3:
423 case SP_KEY_4:
424 case SP_KEY_5:
425 case SP_KEY_6:
426 case SP_KEY_7:
427 case SP_KEY_8:
428 case SP_KEY_9:
429 if(offset < 8)
430 {
431 str[offset++] = '0' +(kcode -SP_KEY_0);
432 }
433 break;
434 case SP_KEY_ENTER:
435 if(offset >= 8)
436 {
437 sp_str_to_hex(str,8,devphyid);
438 if(0 != MEMCMP(pos->devphyid,devphyid,4))
439 {
440 ret = sp_save_devphyid(pos, devphyid);
441 }
442 if(!ret)
443 {
444 MEMCPY(pos->devphyid,devphyid,4);
445 sprintf(msg,"ID: %02x%02x%02x%02x",devphyid[0],devphyid[1],devphyid[2],devphyid[3]);
446 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID³É¹¦",msg, DELAY_TIME2s);
447 }
448 else
449 {
450 show_error(pos,"±£´æÎïÀíIDʧ°Ü",ret);
451 }
452 return;
453 }
454 break;
455 case SP_KEY_CLEAR:
456 if(offset > 0)
457 {
458 offset--;
459 str[offset] = 0;
460 }
461 else
462 {
463 return;
464 }
465 break;
466 }
467 }
468 if(key_press)
469 {
470 sprintf(msg,"%s",str);
471 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID:",msg,0);
472 ticker = sp_get_ticker();
473 key_press = 0;
474 }
475 }
476 return;
477}
478static void sp_set_deviceno(sp_pos_t* pos)
479{
480 uint32 ticker;
481 uint8 kcode;
482 uint16 ret = 0;
483 uint8 key_press = 1;
484 uint16 tempno;
485 uint8 deviceno = pos->deviceno;
486 char msg[17];
487 char temp[17];
488 ticker = sp_get_ticker();
489 while(sp_get_ticker() -ticker < DELAY_TIME60s)
490 {
491 kcode = sp_get_key();
492 if(kcode != SP_KEY_NONE)
493 {
494 key_press = 1;
495 switch(kcode)
496 {
497 case SP_KEY_0:
498 case SP_KEY_1:
499 case SP_KEY_2:
500 case SP_KEY_3:
501 case SP_KEY_4:
502 case SP_KEY_5:
503 case SP_KEY_6:
504 case SP_KEY_7:
505 case SP_KEY_8:
506 case SP_KEY_9:
507 tempno = (uint16)deviceno;
508 tempno *=10;
509 tempno += (kcode-SP_KEY_0);
510 if(tempno > 0 && tempno < DEV_MAX_DEVICENO)
511 {
512 deviceno = (uint8)tempno;
513 }
514 break;
515 case SP_KEY_ENTER:
516 if(deviceno > 0 && deviceno <= DEV_MAX_DEVICENO)
517 {
518 if(pos->deviceno != deviceno)
519 {
520 ret = sp_save_deviceno(pos,deviceno);
521 }
522 if(!ret)
523 {
524 pos->deviceno = deviceno;
525 sprintf(msg,"»úºÅ: %d",deviceno);
526 disp_hint_info_two(pos,"ÉèÖûúºÅ³É¹¦",msg, DELAY_TIME2s);
527 }
528 else
529 {
530 show_error(pos,"±£´æ»úºÅʧ°Ü",ret);
531 }
532 return;
533 }
534 else
535 {
536 sprintf(msg,"·¶Î§(1-%d)",DEV_MAX_DEVICENO);
537 disp_hint_info_two(pos,"»úºÅ´íÎó",msg, DELAY_TIME3s);
538 }
539 case SP_KEY_CLEAR:
540 if(deviceno == 0)
541 {
542 return;
543 }
544 deviceno = 0;
545 break;
546 }
547 }
548 if(key_press)
549 {
550 sprintf(temp,"ÉèÖûúºÅ(1-%d)",DEV_MAX_DEVICENO);
551 sprintf(msg,"%d",deviceno);
552 disp_hint_info_two(pos,temp,msg,0);
553 ticker = sp_get_ticker();
554 key_press = 0;
555 }
556 }
557 return;
558}
559
560static void clear_transdtl(sp_pos_t* pos)
561{
562 if(0 == sp_check_passwd(pos,"Çå¿ÕÁ÷Ë®ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
563 {
564 disp_hint_info_two(pos,"Çå¿ÕÁ÷Ë®","ÇëÉÔµÈ...",0);
565 sp_clear_transdtl(pos);
566 }
567}
568
569static void manual_upgrade(sp_pos_t* pos)
570{
571 if(0 == sp_check_passwd(pos, "ÔÚÏßÉý¼¶ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
572 {
573 sp_manual_upgrade(pos);
574 }
575}
576
577static void reset_factory(sp_pos_t* pos)
578{
579 if(0 == sp_check_passwd(pos, "»Ö¸´³ö³§ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
580 {
581 sp_reset_factory(pos);
582 }
583}
584
zongqiang.zhang63882752019-11-21 15:21:14 +0800585static void test_valve_on(sp_pos_t* pos)
586{
587 uint32 ticker;
588 uint8 kcode;
589 uint32 count;
590 uint32 temp;
591 char msg[32];
592
593 disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","È¡Ïû¼üÍ˳ö",DELAY_TIME2s);
594 ticker = sp_get_ticker();
595 sp_flowsensor_count_clear();
596 sp_valve_on();
597 count = 0;
598 while(sp_get_ticker() -ticker < DELAY_TIME60s)
599 {
600 sp_valve_control();
601 kcode = sp_get_key();
602 if(kcode != SP_KEY_NONE)
603 {
604 if(kcode == SP_KEY_CLEAR)
605 {
606 return;
607 }
608 ticker = sp_get_ticker();
609 }
610 temp = sp_flowsensor_get_count();
611 if(temp != count)
612 {
613 count = temp;
614 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
615 disp_hint_info_two(pos,"·§ÃŲâÊÔÖÐ",msg,DELAY_TIME100ms);
616 }
617 }
618}
619
620static void test_valve_off(sp_pos_t* pos)
621{
622 uint32 count;
623 char msg[32];
624
625 sp_valve_off();
626 count= sp_flowsensor_get_count();
627 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
628 disp_hint_info_two(pos,"·§ÃÅÒѹرÕ",msg,DELAY_TIME3s);
629}
630
631static void test_factory_options(sp_pos_t* pos)
632{
633 uint32 ticker = 0;
634 uint8 keycode;
635 uint8 page;
636 uint8 max_cnt;
637 uint8 key_press = 1;
638
639 menu_t menus[] =
640 {
641 {"1.°´¼üУ׼", do_keyboard_calibrate},
642 {"2.°´¼ü²âÊÔ", do_keyboard_test},
643 {"3.¿ªÆô·§ÃÅ", test_valve_on},
644 {"4.¹Ø±Õ·§ÃÅ", test_valve_off},
645 {"5.ͨѶ²âÊÔ", test_link}
646 };
647 max_cnt = sizeof(menus)/sizeof(menu_t)/3;
648 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 };
719 max_cnt = sizeof(menus)/sizeof(menu_t)/3;
720 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