blob: 4af06a3fcd26985c18d21d0319bed4ea849b84bb [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{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800162 disp_hint_info_two(pos,"УÑé¼üÅÌ","ÇëÉÔµÈ...",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800163 sp_key_calibrate();
164 disp_hint_info_two(pos, "¼üÅÌУÑéÍê³É","Çë¼ì²â",DELAY_TIME3s);
165}
166
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800167static void 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);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800261 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800262 }
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);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800273 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800274 }
275 break;
276 default:
277 break;
278 }
279 }
280 }
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800281}
282
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800283static void sp_set_devtime(sp_pos_t* pos)
284{
285 uint32 ticker;
286 uint8 kcode;
287 uint8 key_press = 1;
288 uint8 ctime[6];
289 uint8 offset;
290 char str[13];
291 char msg[17];
292
293 MEMCLEAR(str,sizeof str);
294 sp_get_bcdtime(ctime);
295 offset = 10;
296 sp_hex_to_str(ctime,5,str);
297 ticker = sp_get_ticker();
298 while(sp_get_ticker() -ticker < DELAY_TIME60s)
299 {
300 kcode = sp_get_key();
301 if(kcode != SP_KEY_NONE)
302 {
303 key_press = 1;
304 switch(kcode)
305 {
306 case SP_KEY_0:
307 case SP_KEY_1:
308 case SP_KEY_2:
309 case SP_KEY_3:
310 case SP_KEY_4:
311 case SP_KEY_5:
312 case SP_KEY_6:
313 case SP_KEY_7:
314 case SP_KEY_8:
315 case SP_KEY_9:
316 if(offset < 10)
317 {
318 str[offset++] = '0' + (kcode- SP_KEY_0);
319 }
320 break;
321 case SP_KEY_ENTER:
322 if(offset >= 10)
323 {
324 MEMCLEAR(ctime,sizeof ctime);
325 sp_str_to_bcd(str,10,ctime);
326 if(sp_check_time_valid(ctime))
327 {
328 disp_hint_info_two(pos,"ÉèÖÃʱ¼äʧ°Ü","ʱ¼ä²»ºÏ·¨", DELAY_TIME3s);
329 }
330 else
331 {
332 sp_set_bcdtime(ctime);
333 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä³É¹¦"," ", DELAY_TIME2s);
334 return;
335 }
336 }
337 break;
338 case SP_KEY_CLEAR:
339 if(offset == 0)
340 {
341 return;
342 }
343 offset--;
344 str[offset] = 0;
345 break;
346 }
347 }
348 if(key_press)
349 {
350 sprintf(msg,"%s",str);
351 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä(ymdHm)",msg,0);
352 ticker = sp_get_ticker();
353 key_press = 0;
354 }
355 }
356}
357
358static void sp_manual_login(sp_pos_t* pos)
359{
360 uint16 ret;
361 uint32 tick;
362 sp_protocol_response_t resp;
363 MEMCLEAR(&resp, sizeof(resp));
364 disp_hint_info_two(pos,"ÕýÔڵǼ","ÇëÉÔµÈ...",0);
365 sp_async_equipment_login(pos);
366 tick = sp_get_ticker();
367 while(sp_get_ticker() - tick < DELAY_TIME3s*2)
368 {
369 MEMCLEAR(&resp, sizeof(resp));
370 usart_read((u8*)&resp, sizeof(resp));
371 if(resp.excmd == SP_CMD_LOGIN)
372 {
373 ret = sp_confirm_login(&resp, pos);
374 break;
375 }
376 else
377 {
378 ret = RC_DEV_LOGIN_FAIL;
379 }
380 }
381 if(ret)
382 {
383 char msg[32];
384 sprintf(msg,"´íÎóÂë=%d",ret);
385 disp_hint_info_two(pos,"Ç©µ½Ê§°Ü",msg,DELAY_TIME3s);
386 }
387 else
388 {
389 disp_hint_info(pos,"Ç©µ½³É¹¦",DELAY_TIME3s);
390 }
391}
392
393static void sp_set_devphyid(sp_pos_t* pos)
394{
395 uint32 ticker;
396 uint8 kcode;
397 uint16 ret = 0;
398 uint8 key_press = 1;
399 char msg[17];
400 uint8 devphyid[4];
401 uint8 offset;
402 char str[9];
403 MEMCPY(devphyid,pos->devphyid,sizeof(pos->devphyid));
404 MEMCLEAR(str,sizeof str);
405
406 ticker = sp_get_ticker();
407 offset = 8;
408 sp_hex_to_str(devphyid,4,str);
409 while(sp_get_ticker() -ticker < DELAY_TIME60s)
410 {
411 kcode = sp_get_key();
412 if(kcode != SP_KEY_NONE)
413 {
414 key_press = 1;
415 switch(kcode)
416 {
417 case SP_KEY_0:
418 case SP_KEY_1:
419 case SP_KEY_2:
420 case SP_KEY_3:
421 case SP_KEY_4:
422 case SP_KEY_5:
423 case SP_KEY_6:
424 case SP_KEY_7:
425 case SP_KEY_8:
426 case SP_KEY_9:
427 if(offset < 8)
428 {
429 str[offset++] = '0' +(kcode -SP_KEY_0);
430 }
431 break;
432 case SP_KEY_ENTER:
433 if(offset >= 8)
434 {
435 sp_str_to_hex(str,8,devphyid);
436 if(0 != MEMCMP(pos->devphyid,devphyid,4))
437 {
438 ret = sp_save_devphyid(pos, devphyid);
439 }
440 if(!ret)
441 {
442 MEMCPY(pos->devphyid,devphyid,4);
443 sprintf(msg,"ID: %02x%02x%02x%02x",devphyid[0],devphyid[1],devphyid[2],devphyid[3]);
444 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID³É¹¦",msg, DELAY_TIME2s);
445 }
446 else
447 {
448 show_error(pos,"±£´æÎïÀíIDʧ°Ü",ret);
449 }
450 return;
451 }
452 break;
453 case SP_KEY_CLEAR:
454 if(offset > 0)
455 {
456 offset--;
457 str[offset] = 0;
458 }
459 else
460 {
461 return;
462 }
463 break;
464 }
465 }
466 if(key_press)
467 {
468 sprintf(msg,"%s",str);
469 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID:",msg,0);
470 ticker = sp_get_ticker();
471 key_press = 0;
472 }
473 }
474 return;
475}
476static void sp_set_deviceno(sp_pos_t* pos)
477{
478 uint32 ticker;
479 uint8 kcode;
480 uint16 ret = 0;
481 uint8 key_press = 1;
482 uint16 tempno;
483 uint8 deviceno = pos->deviceno;
484 char msg[17];
485 char temp[17];
486 ticker = sp_get_ticker();
487 while(sp_get_ticker() -ticker < DELAY_TIME60s)
488 {
489 kcode = sp_get_key();
490 if(kcode != SP_KEY_NONE)
491 {
492 key_press = 1;
493 switch(kcode)
494 {
495 case SP_KEY_0:
496 case SP_KEY_1:
497 case SP_KEY_2:
498 case SP_KEY_3:
499 case SP_KEY_4:
500 case SP_KEY_5:
501 case SP_KEY_6:
502 case SP_KEY_7:
503 case SP_KEY_8:
504 case SP_KEY_9:
505 tempno = (uint16)deviceno;
506 tempno *=10;
507 tempno += (kcode-SP_KEY_0);
508 if(tempno > 0 && tempno < DEV_MAX_DEVICENO)
509 {
510 deviceno = (uint8)tempno;
511 }
512 break;
513 case SP_KEY_ENTER:
514 if(deviceno > 0 && deviceno <= DEV_MAX_DEVICENO)
515 {
516 if(pos->deviceno != deviceno)
517 {
518 ret = sp_save_deviceno(pos,deviceno);
519 }
520 if(!ret)
521 {
522 pos->deviceno = deviceno;
523 sprintf(msg,"»úºÅ: %d",deviceno);
524 disp_hint_info_two(pos,"ÉèÖûúºÅ³É¹¦",msg, DELAY_TIME2s);
525 }
526 else
527 {
528 show_error(pos,"±£´æ»úºÅʧ°Ü",ret);
529 }
530 return;
531 }
532 else
533 {
534 sprintf(msg,"·¶Î§(1-%d)",DEV_MAX_DEVICENO);
535 disp_hint_info_two(pos,"»úºÅ´íÎó",msg, DELAY_TIME3s);
536 }
537 case SP_KEY_CLEAR:
538 if(deviceno == 0)
539 {
540 return;
541 }
542 deviceno = 0;
543 break;
544 }
545 }
546 if(key_press)
547 {
548 sprintf(temp,"ÉèÖûúºÅ(1-%d)",DEV_MAX_DEVICENO);
549 sprintf(msg,"%d",deviceno);
550 disp_hint_info_two(pos,temp,msg,0);
551 ticker = sp_get_ticker();
552 key_press = 0;
553 }
554 }
555 return;
556}
557
558static void clear_transdtl(sp_pos_t* pos)
559{
560 if(0 == sp_check_passwd(pos,"Çå¿ÕÁ÷Ë®ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
561 {
562 disp_hint_info_two(pos,"Çå¿ÕÁ÷Ë®","ÇëÉÔµÈ...",0);
563 sp_clear_transdtl(pos);
564 }
565}
566
567static void manual_upgrade(sp_pos_t* pos)
568{
569 if(0 == sp_check_passwd(pos, "ÔÚÏßÉý¼¶ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
570 {
571 sp_manual_upgrade(pos);
572 }
573}
574
575static void reset_factory(sp_pos_t* pos)
576{
577 if(0 == sp_check_passwd(pos, "»Ö¸´³ö³§ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
578 {
579 sp_reset_factory(pos);
580 }
581}
582
zongqiang.zhang63882752019-11-21 15:21:14 +0800583static void test_valve_on(sp_pos_t* pos)
584{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800585 sp_valve_on();
586 disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","ÇëÈ·ÈÏ",DELAY_TIME2s);
587}
588
589static void test_valve_off(sp_pos_t* pos)
590{
591 sp_valve_off();
592 disp_hint_info_two(pos,"·§ÃÅÒѹرÕ","ÇëÈ·ÈÏ",DELAY_TIME3s);
593}
594static void test_flowsensor(sp_pos_t* pos)
595{
zongqiang.zhang63882752019-11-21 15:21:14 +0800596 uint32 ticker;
597 uint8 kcode;
598 uint32 count;
599 uint32 temp;
600 char msg[32];
601
zongqiang.zhang63882752019-11-21 15:21:14 +0800602 sp_flowsensor_count_clear();
603 sp_valve_on();
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800604 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ","ÇëÈ·ÈÏ",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800605 count = 0;
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800606 ticker = sp_get_ticker();
zongqiang.zhang63882752019-11-21 15:21:14 +0800607 while(sp_get_ticker() -ticker < DELAY_TIME60s)
608 {
609 sp_valve_control();
610 kcode = sp_get_key();
611 if(kcode != SP_KEY_NONE)
612 {
613 if(kcode == SP_KEY_CLEAR)
614 {
615 return;
616 }
617 ticker = sp_get_ticker();
618 }
619 temp = sp_flowsensor_get_count();
620 if(temp != count)
621 {
622 count = temp;
623 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800624 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ",msg,DELAY_TIME100ms);
zongqiang.zhang63882752019-11-21 15:21:14 +0800625 }
626 }
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800627 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",sp_flowsensor_get_count());
628 disp_hint_info_two(pos,"Á÷Á¿²âÊÔ½áÊø",msg,DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800629}
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},
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800645 {"5.Á÷Á¿²âÊÔ", test_flowsensor},
646 {"6.ͨѶ²âÊÔ", test_link}
zongqiang.zhang63882752019-11-21 15:21:14 +0800647 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800648 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800649 page = 0;
650 ticker = sp_get_ticker();
651 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
652 {
653 sp_feed_dog();
654 keycode = sp_get_key();
655 if(keycode != SP_KEY_NONE)
656 {
657 key_press = 1;
658 switch(keycode)
659 {
660 case SP_KEY_0:
661 if(page < (max_cnt-1))
662 {
663 page++;
664 }
665 break;
666 case SP_KEY_1:
667 case SP_KEY_2:
668 case SP_KEY_3:
669 case SP_KEY_4:
670 case SP_KEY_5:
671 case SP_KEY_6:
672 case SP_KEY_7:
673 case SP_KEY_8:
674 case SP_KEY_9:
675 if(menus[keycode-SP_KEY_1].func != NULL)
676 {
677 menus[keycode-SP_KEY_1].func(pos);
678 }
679 break;
680 case SP_KEY_CLEAR:
681 if(page == 0)
682 {
683 return;
684 }
685 page--;
686 break;
687 default:
688 break;
689 }
690 }
691 if(key_press)
692 {
693 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
694 key_press = 0;
695 ticker = sp_get_ticker();
696 }
697 }
698}
699
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800700void sp_menu_options(sp_pos_t* pos)
701{
702 uint32 ticker = 0;
703 uint8 keycode;
704 uint8 page;
705 uint8 max_cnt;
706 uint8 key_press = 1;
707
708 menu_t menus[] =
709 {
710 {"1.²é¿´²ÎÊý", sp_show_syspara},
zongqiang.zhang63882752019-11-21 15:21:14 +0800711 {"2.¹¤³§²âÊÔ", test_factory_options},
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800712 {"3.ÉèÖÃʱ¼ä", sp_set_devtime},
713 {"4.ÊÖ¶¯µÇ¼", sp_manual_login},
714 {"5.ÉèÖÃÎïÀíid", sp_set_devphyid},
715 {"6.ÉèÖûúºÅ", sp_set_deviceno},
716 {"7.Çå¿ÕÁ÷Ë®", clear_transdtl},
717 {"8.ÔÚÏßÉý¼¶", manual_upgrade},
718 {"9.»Ö¸´³ö³§", reset_factory}
719 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800720 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800721 page = 0;
722 ticker = sp_get_ticker();
723 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
724 {
725 sp_feed_dog();
726 keycode = sp_get_key();
727 if(keycode != SP_KEY_NONE)
728 {
729 key_press = 1;
730 switch(keycode)
731 {
732 case SP_KEY_0:
733 if(page < (max_cnt-1))
734 {
735 page++;
736 }
737 break;
738 case SP_KEY_1:
739 case SP_KEY_2:
740 case SP_KEY_3:
741 case SP_KEY_4:
742 case SP_KEY_5:
743 case SP_KEY_6:
744 case SP_KEY_7:
745 case SP_KEY_8:
746 case SP_KEY_9:
747 if(menus[keycode-SP_KEY_1].func != NULL)
748 {
749 menus[keycode-SP_KEY_1].func(pos);
750 }
751 break;
752 case SP_KEY_CLEAR:
753 if(page == 0)
754 {
755 return;
756 }
757 page--;
758 break;
759 default:
760 break;
761 }
762 }
763 if(key_press)
764 {
765 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
766 key_press = 0;
767 ticker = sp_get_ticker();
768 }
769 }
770}
zongqiang.zhang63882752019-11-21 15:21:14 +0800771
772