blob: 282ff76e13614169f626dd15b7677d9fa0a21b07 [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)",
73 ((uint32)POS.sysconf.flowsensor_unit)*1);
74
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 {
142 if(sp_check_time_valid(resp.data +2))
143 {
144 disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ʱÖÓ²»ºÏ·¨", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800145 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800146 }
147 sp_set_bcdtime(resp.data +2);
148 disp_hint_info_two(pos, "Á´Â·¼ì²â³É¹¦","ÒÑͬ²½Ê±ÖÓ", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800149 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800150 }
151 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","ÊÕµ½´íÎó°ü", DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800152 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800153 }
154 disp_hint_info_two(pos, "Á´Â·¼ì²âʧ°Ü","Çë¼ì²âÏß·", DELAY_TIME3s);
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800155}
156
157static void show_keyboard_test(sp_pos_t* pos, uint8 offset)
158{
159 char msg[]= {"0123456789C"};
160 char temp[17];
161 snprintf(temp,offset+1,"%s",msg);
162 disp_hint_info_three(pos, "¼üÅÌÒÀ´ÎÊäÈë","0123456789C",temp,0);
163}
164
zongqiang.zhang63882752019-11-21 15:21:14 +0800165static void do_keyboard_calibrate(sp_pos_t* pos)
166{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800167 disp_hint_info_two(pos,"УÑé¼üÅÌ","ÇëÉÔµÈ...",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800168 sp_key_calibrate();
169 disp_hint_info_two(pos, "¼üÅÌУÑéÍê³É","Çë¼ì²â",DELAY_TIME3s);
170}
171
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800172static void do_keyboard_test(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800173{
174 uint8 kcode;
175 uint32 tick;
176 uint8 offset = 0;
177 uint8 keybuf[12]= {SP_KEY_0,SP_KEY_1,SP_KEY_2,SP_KEY_3,
178 SP_KEY_4,SP_KEY_5,SP_KEY_6,SP_KEY_7,
179 SP_KEY_8,SP_KEY_9,SP_KEY_CLEAR,SP_KEY_ENTER
180 };
181 show_keyboard_test(pos, offset);
182 tick = sp_get_ticker();
183 while((sp_get_ticker()-tick) < DELAY_TIME60s)
184 {
185 sp_feed_dog();
186 kcode = sp_get_key();
187 if(kcode != SP_KEY_NONE)
188 {
189 tick = sp_get_ticker();
190 switch(kcode)
191 {
192 case SP_KEY_0:
193 if(keybuf[offset] == SP_KEY_0)
194 {
195 ++offset;
196 show_keyboard_test(pos, offset);
197 }
198 break;
199 case SP_KEY_1:
200 if(keybuf[offset] == SP_KEY_1)
201 {
202 ++offset;
203 show_keyboard_test(pos, offset);
204 }
205 break;
206 case SP_KEY_2:
207 if(keybuf[offset] == SP_KEY_2)
208 {
209 ++offset;
210 show_keyboard_test(pos, offset);
211 }
212 break;
213 case SP_KEY_3:
214 if(keybuf[offset] == SP_KEY_3)
215 {
216 ++offset;
217 show_keyboard_test(pos, offset);
218 }
219 break;
220 case SP_KEY_4:
221 if(keybuf[offset] == SP_KEY_4)
222 {
223 ++offset;
224 show_keyboard_test(pos, offset);
225 }
226 break;
227 case SP_KEY_5:
228 if(keybuf[offset] == SP_KEY_5)
229 {
230 ++offset;
231 show_keyboard_test(pos, offset);
232 }
233 break;
234 case SP_KEY_6:
235 if(keybuf[offset] == SP_KEY_6)
236 {
237 ++offset;
238 show_keyboard_test(pos, offset);
239 }
240 break;
241 case SP_KEY_7:
242 if(keybuf[offset] == SP_KEY_7)
243 {
244 ++offset;
245 show_keyboard_test(pos, offset);
246 }
247 break;
248 case SP_KEY_8:
249 if(keybuf[offset] == SP_KEY_8)
250 {
251 ++offset;
252 show_keyboard_test(pos, offset);
253 }
254 break;
255 case SP_KEY_9:
256 if(keybuf[offset] == SP_KEY_9)
257 {
258 ++offset;
259 show_keyboard_test(pos, offset);
260 }
261 break;
262 case SP_KEY_CLEAR:
263 if(offset == 0)
264 {
265 disp_hint_info(pos, "È¡Ïû°´¼ü¼ì²â",DELAY_TIME2s);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800266 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800267 }
268 if(keybuf[offset] == SP_KEY_CLEAR)
269 {
270 ++offset;
271 show_keyboard_test(pos, offset);
272 }
273 break;
274 case SP_KEY_ENTER:
275 if(keybuf[offset] == SP_KEY_ENTER)
276 {
277 disp_hint_info_two(pos, "¼üÅ̼ì²âÕýÈ·","¼üÅÌУ׼Õý³£",DELAY_TIME3s);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800278 return;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800279 }
280 break;
281 default:
282 break;
283 }
284 }
285 }
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800286}
287
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800288static void sp_set_devtime(sp_pos_t* pos)
289{
290 uint32 ticker;
291 uint8 kcode;
292 uint8 key_press = 1;
293 uint8 ctime[6];
294 uint8 offset;
295 char str[13];
296 char msg[17];
297
298 MEMCLEAR(str,sizeof str);
299 sp_get_bcdtime(ctime);
300 offset = 10;
301 sp_hex_to_str(ctime,5,str);
302 ticker = sp_get_ticker();
303 while(sp_get_ticker() -ticker < DELAY_TIME60s)
304 {
305 kcode = sp_get_key();
306 if(kcode != SP_KEY_NONE)
307 {
308 key_press = 1;
309 switch(kcode)
310 {
311 case SP_KEY_0:
312 case SP_KEY_1:
313 case SP_KEY_2:
314 case SP_KEY_3:
315 case SP_KEY_4:
316 case SP_KEY_5:
317 case SP_KEY_6:
318 case SP_KEY_7:
319 case SP_KEY_8:
320 case SP_KEY_9:
321 if(offset < 10)
322 {
323 str[offset++] = '0' + (kcode- SP_KEY_0);
324 }
325 break;
326 case SP_KEY_ENTER:
327 if(offset >= 10)
328 {
329 MEMCLEAR(ctime,sizeof ctime);
330 sp_str_to_bcd(str,10,ctime);
331 if(sp_check_time_valid(ctime))
332 {
333 disp_hint_info_two(pos,"ÉèÖÃʱ¼äʧ°Ü","ʱ¼ä²»ºÏ·¨", DELAY_TIME3s);
334 }
335 else
336 {
337 sp_set_bcdtime(ctime);
338 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä³É¹¦"," ", DELAY_TIME2s);
339 return;
340 }
341 }
342 break;
343 case SP_KEY_CLEAR:
344 if(offset == 0)
345 {
346 return;
347 }
348 offset--;
349 str[offset] = 0;
350 break;
351 }
352 }
353 if(key_press)
354 {
355 sprintf(msg,"%s",str);
356 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä(ymdHm)",msg,0);
357 ticker = sp_get_ticker();
358 key_press = 0;
359 }
360 }
361}
362
363static void sp_manual_login(sp_pos_t* pos)
364{
365 uint16 ret;
366 uint32 tick;
367 sp_protocol_response_t resp;
368 MEMCLEAR(&resp, sizeof(resp));
369 disp_hint_info_two(pos,"ÕýÔڵǼ","ÇëÉÔµÈ...",0);
370 sp_async_equipment_login(pos);
371 tick = sp_get_ticker();
372 while(sp_get_ticker() - tick < DELAY_TIME3s*2)
373 {
374 MEMCLEAR(&resp, sizeof(resp));
375 usart_read((u8*)&resp, sizeof(resp));
376 if(resp.excmd == SP_CMD_LOGIN)
377 {
378 ret = sp_confirm_login(&resp, pos);
379 break;
380 }
381 else
382 {
383 ret = RC_DEV_LOGIN_FAIL;
384 }
385 }
386 if(ret)
387 {
388 char msg[32];
389 sprintf(msg,"´íÎóÂë=%d",ret);
390 disp_hint_info_two(pos,"Ç©µ½Ê§°Ü",msg,DELAY_TIME3s);
391 }
392 else
393 {
394 disp_hint_info(pos,"Ç©µ½³É¹¦",DELAY_TIME3s);
395 }
396}
397
398static void sp_set_devphyid(sp_pos_t* pos)
399{
400 uint32 ticker;
401 uint8 kcode;
402 uint16 ret = 0;
403 uint8 key_press = 1;
404 char msg[17];
405 uint8 devphyid[4];
406 uint8 offset;
407 char str[9];
408 MEMCPY(devphyid,pos->devphyid,sizeof(pos->devphyid));
409 MEMCLEAR(str,sizeof str);
410
411 ticker = sp_get_ticker();
412 offset = 8;
413 sp_hex_to_str(devphyid,4,str);
414 while(sp_get_ticker() -ticker < DELAY_TIME60s)
415 {
416 kcode = sp_get_key();
417 if(kcode != SP_KEY_NONE)
418 {
419 key_press = 1;
420 switch(kcode)
421 {
422 case SP_KEY_0:
423 case SP_KEY_1:
424 case SP_KEY_2:
425 case SP_KEY_3:
426 case SP_KEY_4:
427 case SP_KEY_5:
428 case SP_KEY_6:
429 case SP_KEY_7:
430 case SP_KEY_8:
431 case SP_KEY_9:
432 if(offset < 8)
433 {
434 str[offset++] = '0' +(kcode -SP_KEY_0);
435 }
436 break;
437 case SP_KEY_ENTER:
438 if(offset >= 8)
439 {
440 sp_str_to_hex(str,8,devphyid);
441 if(0 != MEMCMP(pos->devphyid,devphyid,4))
442 {
443 ret = sp_save_devphyid(pos, devphyid);
444 }
445 if(!ret)
446 {
447 MEMCPY(pos->devphyid,devphyid,4);
448 sprintf(msg,"ID: %02x%02x%02x%02x",devphyid[0],devphyid[1],devphyid[2],devphyid[3]);
449 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID³É¹¦",msg, DELAY_TIME2s);
450 }
451 else
452 {
453 show_error(pos,"±£´æÎïÀíIDʧ°Ü",ret);
454 }
455 return;
456 }
457 break;
458 case SP_KEY_CLEAR:
459 if(offset > 0)
460 {
461 offset--;
462 str[offset] = 0;
463 }
464 else
465 {
466 return;
467 }
468 break;
469 }
470 }
471 if(key_press)
472 {
473 sprintf(msg,"%s",str);
474 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID:",msg,0);
475 ticker = sp_get_ticker();
476 key_press = 0;
477 }
478 }
479 return;
480}
481static void sp_set_deviceno(sp_pos_t* pos)
482{
483 uint32 ticker;
484 uint8 kcode;
485 uint16 ret = 0;
486 uint8 key_press = 1;
487 uint16 tempno;
488 uint8 deviceno = pos->deviceno;
489 char msg[17];
490 char temp[17];
491 ticker = sp_get_ticker();
492 while(sp_get_ticker() -ticker < DELAY_TIME60s)
493 {
494 kcode = sp_get_key();
495 if(kcode != SP_KEY_NONE)
496 {
497 key_press = 1;
498 switch(kcode)
499 {
500 case SP_KEY_0:
501 case SP_KEY_1:
502 case SP_KEY_2:
503 case SP_KEY_3:
504 case SP_KEY_4:
505 case SP_KEY_5:
506 case SP_KEY_6:
507 case SP_KEY_7:
508 case SP_KEY_8:
509 case SP_KEY_9:
510 tempno = (uint16)deviceno;
511 tempno *=10;
512 tempno += (kcode-SP_KEY_0);
513 if(tempno > 0 && tempno < DEV_MAX_DEVICENO)
514 {
515 deviceno = (uint8)tempno;
516 }
517 break;
518 case SP_KEY_ENTER:
519 if(deviceno > 0 && deviceno <= DEV_MAX_DEVICENO)
520 {
521 if(pos->deviceno != deviceno)
522 {
523 ret = sp_save_deviceno(pos,deviceno);
524 }
525 if(!ret)
526 {
527 pos->deviceno = deviceno;
528 sprintf(msg,"»úºÅ: %d",deviceno);
529 disp_hint_info_two(pos,"ÉèÖûúºÅ³É¹¦",msg, DELAY_TIME2s);
530 }
531 else
532 {
533 show_error(pos,"±£´æ»úºÅʧ°Ü",ret);
534 }
535 return;
536 }
537 else
538 {
539 sprintf(msg,"·¶Î§(1-%d)",DEV_MAX_DEVICENO);
540 disp_hint_info_two(pos,"»úºÅ´íÎó",msg, DELAY_TIME3s);
541 }
542 case SP_KEY_CLEAR:
543 if(deviceno == 0)
544 {
545 return;
546 }
547 deviceno = 0;
548 break;
549 }
550 }
551 if(key_press)
552 {
553 sprintf(temp,"ÉèÖûúºÅ(1-%d)",DEV_MAX_DEVICENO);
554 sprintf(msg,"%d",deviceno);
555 disp_hint_info_two(pos,temp,msg,0);
556 ticker = sp_get_ticker();
557 key_press = 0;
558 }
559 }
560 return;
561}
562
563static void clear_transdtl(sp_pos_t* pos)
564{
565 if(0 == sp_check_passwd(pos,"Çå¿ÕÁ÷Ë®ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
566 {
567 disp_hint_info_two(pos,"Çå¿ÕÁ÷Ë®","ÇëÉÔµÈ...",0);
568 sp_clear_transdtl(pos);
569 }
570}
571
572static void manual_upgrade(sp_pos_t* pos)
573{
574 if(0 == sp_check_passwd(pos, "ÔÚÏßÉý¼¶ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
575 {
576 sp_manual_upgrade(pos);
577 }
578}
579
580static void reset_factory(sp_pos_t* pos)
581{
582 if(0 == sp_check_passwd(pos, "»Ö¸´³ö³§ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
583 {
584 sp_reset_factory(pos);
585 }
586}
587
zongqiang.zhang63882752019-11-21 15:21:14 +0800588static void test_valve_on(sp_pos_t* pos)
589{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800590 sp_valve_on();
591 disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","ÇëÈ·ÈÏ",DELAY_TIME2s);
592}
593
594static void test_valve_off(sp_pos_t* pos)
595{
596 sp_valve_off();
597 disp_hint_info_two(pos,"·§ÃÅÒѹرÕ","ÇëÈ·ÈÏ",DELAY_TIME3s);
598}
599static void test_flowsensor(sp_pos_t* pos)
600{
zongqiang.zhang63882752019-11-21 15:21:14 +0800601 uint32 ticker;
602 uint8 kcode;
603 uint32 count;
604 uint32 temp;
605 char msg[32];
606
zongqiang.zhang63882752019-11-21 15:21:14 +0800607 sp_flowsensor_count_clear();
608 sp_valve_on();
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800609 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ","ÇëÈ·ÈÏ",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800610 count = 0;
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800611 ticker = sp_get_ticker();
zongqiang.zhang63882752019-11-21 15:21:14 +0800612 while(sp_get_ticker() -ticker < DELAY_TIME60s)
613 {
614 sp_valve_control();
615 kcode = sp_get_key();
616 if(kcode != SP_KEY_NONE)
617 {
618 if(kcode == SP_KEY_CLEAR)
619 {
620 return;
621 }
622 ticker = sp_get_ticker();
623 }
624 temp = sp_flowsensor_get_count();
625 if(temp != count)
626 {
627 count = temp;
628 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800629 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ",msg,DELAY_TIME100ms);
zongqiang.zhang63882752019-11-21 15:21:14 +0800630 }
631 }
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800632 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",sp_flowsensor_get_count());
633 disp_hint_info_two(pos,"Á÷Á¿²âÊÔ½áÊø",msg,DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800634}
635
636static void test_factory_options(sp_pos_t* pos)
637{
638 uint32 ticker = 0;
639 uint8 keycode;
640 uint8 page;
641 uint8 max_cnt;
642 uint8 key_press = 1;
643
644 menu_t menus[] =
645 {
646 {"1.°´¼üУ׼", do_keyboard_calibrate},
647 {"2.°´¼ü²âÊÔ", do_keyboard_test},
648 {"3.¿ªÆô·§ÃÅ", test_valve_on},
649 {"4.¹Ø±Õ·§ÃÅ", test_valve_off},
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800650 {"5.Á÷Á¿²âÊÔ", test_flowsensor},
651 {"6.ͨѶ²âÊÔ", test_link}
zongqiang.zhang63882752019-11-21 15:21:14 +0800652 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800653 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800654 page = 0;
655 ticker = sp_get_ticker();
656 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
657 {
658 sp_feed_dog();
659 keycode = sp_get_key();
660 if(keycode != SP_KEY_NONE)
661 {
662 key_press = 1;
663 switch(keycode)
664 {
665 case SP_KEY_0:
666 if(page < (max_cnt-1))
667 {
668 page++;
669 }
670 break;
671 case SP_KEY_1:
672 case SP_KEY_2:
673 case SP_KEY_3:
674 case SP_KEY_4:
675 case SP_KEY_5:
676 case SP_KEY_6:
677 case SP_KEY_7:
678 case SP_KEY_8:
679 case SP_KEY_9:
680 if(menus[keycode-SP_KEY_1].func != NULL)
681 {
682 menus[keycode-SP_KEY_1].func(pos);
683 }
684 break;
685 case SP_KEY_CLEAR:
686 if(page == 0)
687 {
688 return;
689 }
690 page--;
691 break;
692 default:
693 break;
694 }
695 }
696 if(key_press)
697 {
698 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
699 key_press = 0;
700 ticker = sp_get_ticker();
701 }
702 }
703}
704
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800705void sp_menu_options(sp_pos_t* pos)
706{
707 uint32 ticker = 0;
708 uint8 keycode;
709 uint8 page;
710 uint8 max_cnt;
711 uint8 key_press = 1;
712
713 menu_t menus[] =
714 {
715 {"1.²é¿´²ÎÊý", sp_show_syspara},
zongqiang.zhang63882752019-11-21 15:21:14 +0800716 {"2.¹¤³§²âÊÔ", test_factory_options},
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800717 {"3.ÉèÖÃʱ¼ä", sp_set_devtime},
718 {"4.ÊÖ¶¯µÇ¼", sp_manual_login},
719 {"5.ÉèÖÃÎïÀíid", sp_set_devphyid},
720 {"6.ÉèÖûúºÅ", sp_set_deviceno},
721 {"7.Çå¿ÕÁ÷Ë®", clear_transdtl},
722 {"8.ÔÚÏßÉý¼¶", manual_upgrade},
723 {"9.»Ö¸´³ö³§", reset_factory}
724 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800725 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800726 page = 0;
727 ticker = sp_get_ticker();
728 while(sp_get_ticker()-ticker <= DELAY_TIME60s*5)
729 {
730 sp_feed_dog();
731 keycode = sp_get_key();
732 if(keycode != SP_KEY_NONE)
733 {
734 key_press = 1;
735 switch(keycode)
736 {
737 case SP_KEY_0:
738 if(page < (max_cnt-1))
739 {
740 page++;
741 }
742 break;
743 case SP_KEY_1:
744 case SP_KEY_2:
745 case SP_KEY_3:
746 case SP_KEY_4:
747 case SP_KEY_5:
748 case SP_KEY_6:
749 case SP_KEY_7:
750 case SP_KEY_8:
751 case SP_KEY_9:
752 if(menus[keycode-SP_KEY_1].func != NULL)
753 {
754 menus[keycode-SP_KEY_1].func(pos);
755 }
756 break;
757 case SP_KEY_CLEAR:
758 if(page == 0)
759 {
760 return;
761 }
762 page--;
763 break;
764 default:
765 break;
766 }
767 }
768 if(key_press)
769 {
770 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
771 key_press = 0;
772 ticker = sp_get_ticker();
773 }
774 }
775}
zongqiang.zhang63882752019-11-21 15:21:14 +0800776
777