blob: d9d1b0a0a5f436a2725a6dcbb8cc32ff769826b7 [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 {
zongqiang.zhang10678fd2019-11-25 13:37:03 +080083 sp_feed_dog();
zongqiang.zhang0c6a0882019-08-07 14:48:21 +080084 keycode = sp_get_key();
85 if(keycode != SP_KEY_NONE)
86 {
87 key_press = 1;
88 switch(keycode)
89 {
90 case SP_KEY_0:
91 if(offset < max_cnt-1)
92 {
93 offset++;
94 }
95 break;
96 case SP_KEY_1:
97 case SP_KEY_2:
98 case SP_KEY_3:
99 case SP_KEY_4:
100 case SP_KEY_5:
101 case SP_KEY_6:
102 case SP_KEY_7:
103 case SP_KEY_8:
104 case SP_KEY_9:
105 offset = keycode -SP_KEY_0;
106 if(offset >= max_cnt)
107 {
108 offset = max_cnt -1;
109 }
110 break;
111 case SP_KEY_CLEAR:
112 return;
113 }
114 }
115 if(key_press)
116 {
117 disp_hint_info_two(pos, syspara[2*offset],syspara[2*offset+1],0);
118 key_press = 0;
119 ticker = sp_get_ticker();
120 }
121 }
122}
123
zongqiang.zhang63882752019-11-21 15:21:14 +0800124static void test_link(sp_pos_t* pos)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800125{
126 uint8 ret;
127 sp_protocol_request_t req;
128 sp_protocol_response_t resp;
129 MEMCLEAR(&req, sizeof(req));
130 MEMCLEAR(&resp, sizeof(resp));
131
132 disp_hint_info_two(pos, "ÕýÔÚÁ´Â·¼ì²â", "ÇëÉÔµÈ.....", 0);
133 sp_protocol_req_init(&req, SP_CMD_FACTORY_LINK_TEST);
134 req.data[0] = 0;
135 req.data[1] = 0x55;
136 req.data[2] = 0xAA;
137 req.datalen += 3;
138 ret = sp_comm_call(pos, &req, &resp, DELAY_TIME3s);
139 if(!ret)
140 {
141 if(resp.data[0] == 0x55 && resp.data[1] == 0xAA)
142 {
zongqiang.zhang6e4e3932019-11-22 09:15:54 +0800143 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 {
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800300 sp_feed_dog();
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800301 kcode = sp_get_key();
302 if(kcode != SP_KEY_NONE)
303 {
304 key_press = 1;
305 switch(kcode)
306 {
307 case SP_KEY_0:
308 case SP_KEY_1:
309 case SP_KEY_2:
310 case SP_KEY_3:
311 case SP_KEY_4:
312 case SP_KEY_5:
313 case SP_KEY_6:
314 case SP_KEY_7:
315 case SP_KEY_8:
316 case SP_KEY_9:
317 if(offset < 10)
318 {
319 str[offset++] = '0' + (kcode- SP_KEY_0);
320 }
321 break;
322 case SP_KEY_ENTER:
323 if(offset >= 10)
324 {
325 MEMCLEAR(ctime,sizeof ctime);
326 sp_str_to_bcd(str,10,ctime);
327 if(sp_check_time_valid(ctime))
328 {
329 disp_hint_info_two(pos,"ÉèÖÃʱ¼äʧ°Ü","ʱ¼ä²»ºÏ·¨", DELAY_TIME3s);
330 }
331 else
332 {
333 sp_set_bcdtime(ctime);
334 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä³É¹¦"," ", DELAY_TIME2s);
335 return;
336 }
337 }
338 break;
339 case SP_KEY_CLEAR:
340 if(offset == 0)
341 {
342 return;
343 }
344 offset--;
345 str[offset] = 0;
346 break;
347 }
348 }
349 if(key_press)
350 {
351 sprintf(msg,"%s",str);
352 disp_hint_info_two(pos,"ÉèÖÃʱ¼ä(ymdHm)",msg,0);
353 ticker = sp_get_ticker();
354 key_press = 0;
355 }
356 }
357}
358
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800359static void sp_set_devphyid(sp_pos_t* pos)
360{
361 uint32 ticker;
362 uint8 kcode;
363 uint16 ret = 0;
364 uint8 key_press = 1;
365 char msg[17];
366 uint8 devphyid[4];
367 uint8 offset;
368 char str[9];
369 MEMCPY(devphyid,pos->devphyid,sizeof(pos->devphyid));
370 MEMCLEAR(str,sizeof str);
371
372 ticker = sp_get_ticker();
373 offset = 8;
374 sp_hex_to_str(devphyid,4,str);
375 while(sp_get_ticker() -ticker < DELAY_TIME60s)
376 {
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800377 sp_feed_dog();
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800378 kcode = sp_get_key();
379 if(kcode != SP_KEY_NONE)
380 {
381 key_press = 1;
382 switch(kcode)
383 {
384 case SP_KEY_0:
385 case SP_KEY_1:
386 case SP_KEY_2:
387 case SP_KEY_3:
388 case SP_KEY_4:
389 case SP_KEY_5:
390 case SP_KEY_6:
391 case SP_KEY_7:
392 case SP_KEY_8:
393 case SP_KEY_9:
394 if(offset < 8)
395 {
396 str[offset++] = '0' +(kcode -SP_KEY_0);
397 }
398 break;
399 case SP_KEY_ENTER:
400 if(offset >= 8)
401 {
402 sp_str_to_hex(str,8,devphyid);
403 if(0 != MEMCMP(pos->devphyid,devphyid,4))
404 {
405 ret = sp_save_devphyid(pos, devphyid);
406 }
407 if(!ret)
408 {
409 MEMCPY(pos->devphyid,devphyid,4);
410 sprintf(msg,"ID: %02x%02x%02x%02x",devphyid[0],devphyid[1],devphyid[2],devphyid[3]);
411 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID³É¹¦",msg, DELAY_TIME2s);
412 }
413 else
414 {
415 show_error(pos,"±£´æÎïÀíIDʧ°Ü",ret);
416 }
417 return;
418 }
419 break;
420 case SP_KEY_CLEAR:
421 if(offset > 0)
422 {
423 offset--;
424 str[offset] = 0;
425 }
426 else
427 {
428 return;
429 }
430 break;
431 }
432 }
433 if(key_press)
434 {
435 sprintf(msg,"%s",str);
436 disp_hint_info_two(pos,"ÉèÖÃÎïÀíID:",msg,0);
437 ticker = sp_get_ticker();
438 key_press = 0;
439 }
440 }
441 return;
442}
443static void sp_set_deviceno(sp_pos_t* pos)
444{
445 uint32 ticker;
446 uint8 kcode;
447 uint16 ret = 0;
448 uint8 key_press = 1;
449 uint16 tempno;
450 uint8 deviceno = pos->deviceno;
451 char msg[17];
452 char temp[17];
453 ticker = sp_get_ticker();
454 while(sp_get_ticker() -ticker < DELAY_TIME60s)
455 {
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800456 sp_feed_dog();
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800457 kcode = sp_get_key();
458 if(kcode != SP_KEY_NONE)
459 {
460 key_press = 1;
461 switch(kcode)
462 {
463 case SP_KEY_0:
464 case SP_KEY_1:
465 case SP_KEY_2:
466 case SP_KEY_3:
467 case SP_KEY_4:
468 case SP_KEY_5:
469 case SP_KEY_6:
470 case SP_KEY_7:
471 case SP_KEY_8:
472 case SP_KEY_9:
473 tempno = (uint16)deviceno;
474 tempno *=10;
475 tempno += (kcode-SP_KEY_0);
476 if(tempno > 0 && tempno < DEV_MAX_DEVICENO)
477 {
478 deviceno = (uint8)tempno;
479 }
480 break;
481 case SP_KEY_ENTER:
482 if(deviceno > 0 && deviceno <= DEV_MAX_DEVICENO)
483 {
484 if(pos->deviceno != deviceno)
485 {
486 ret = sp_save_deviceno(pos,deviceno);
487 }
488 if(!ret)
489 {
490 pos->deviceno = deviceno;
491 sprintf(msg,"»úºÅ: %d",deviceno);
492 disp_hint_info_two(pos,"ÉèÖûúºÅ³É¹¦",msg, DELAY_TIME2s);
493 }
494 else
495 {
496 show_error(pos,"±£´æ»úºÅʧ°Ü",ret);
497 }
498 return;
499 }
500 else
501 {
502 sprintf(msg,"·¶Î§(1-%d)",DEV_MAX_DEVICENO);
503 disp_hint_info_two(pos,"»úºÅ´íÎó",msg, DELAY_TIME3s);
504 }
505 case SP_KEY_CLEAR:
506 if(deviceno == 0)
507 {
508 return;
509 }
510 deviceno = 0;
511 break;
512 }
513 }
514 if(key_press)
515 {
516 sprintf(temp,"ÉèÖûúºÅ(1-%d)",DEV_MAX_DEVICENO);
517 sprintf(msg,"%d",deviceno);
518 disp_hint_info_two(pos,temp,msg,0);
519 ticker = sp_get_ticker();
520 key_press = 0;
521 }
522 }
523 return;
524}
525
526static void clear_transdtl(sp_pos_t* pos)
527{
528 if(0 == sp_check_passwd(pos,"Çå¿ÕÁ÷Ë®ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
529 {
530 disp_hint_info_two(pos,"Çå¿ÕÁ÷Ë®","ÇëÉÔµÈ...",0);
531 sp_clear_transdtl(pos);
532 }
533}
534
535static void manual_upgrade(sp_pos_t* pos)
536{
537 if(0 == sp_check_passwd(pos, "ÔÚÏßÉý¼¶ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
538 {
539 sp_manual_upgrade(pos);
540 }
541}
542
543static void reset_factory(sp_pos_t* pos)
544{
545 if(0 == sp_check_passwd(pos, "»Ö¸´³ö³§ÃÜÂë:","\x9\x1\x4\x3\x8\x7"))
546 {
547 sp_reset_factory(pos);
548 }
549}
550
zongqiang.zhang63882752019-11-21 15:21:14 +0800551static void test_valve_on(sp_pos_t* pos)
552{
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800553 sp_valve_on();
554 disp_hint_info_two(pos,"·§ÃÅ¿ªÆôÖÐ","ÇëÈ·ÈÏ",DELAY_TIME2s);
555}
556
557static void test_valve_off(sp_pos_t* pos)
558{
559 sp_valve_off();
560 disp_hint_info_two(pos,"·§ÃÅÒѹرÕ","ÇëÈ·ÈÏ",DELAY_TIME3s);
561}
562static void test_flowsensor(sp_pos_t* pos)
563{
zongqiang.zhang63882752019-11-21 15:21:14 +0800564 uint32 ticker;
565 uint8 kcode;
566 uint32 count;
567 uint32 temp;
568 char msg[32];
569
zongqiang.zhang63882752019-11-21 15:21:14 +0800570 sp_flowsensor_count_clear();
571 sp_valve_on();
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800572 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ","ÇëÈ·ÈÏ",0);
zongqiang.zhang63882752019-11-21 15:21:14 +0800573 count = 0;
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800574 ticker = sp_get_ticker();
zongqiang.zhang63882752019-11-21 15:21:14 +0800575 while(sp_get_ticker() -ticker < DELAY_TIME60s)
576 {
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800577 sp_feed_dog();
zongqiang.zhang63882752019-11-21 15:21:14 +0800578 sp_valve_control();
579 kcode = sp_get_key();
580 if(kcode != SP_KEY_NONE)
581 {
582 if(kcode == SP_KEY_CLEAR)
583 {
zongqiang.zhangd68cf502019-11-22 10:54:27 +0800584 sp_valve_off();
zongqiang.zhang63882752019-11-21 15:21:14 +0800585 return;
586 }
587 ticker = sp_get_ticker();
588 }
589 temp = sp_flowsensor_get_count();
590 if(temp != count)
591 {
592 count = temp;
593 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",count);
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800594 disp_hint_info_two(pos,"Á÷Á¿²âÊÔÖÐ",msg,DELAY_TIME100ms);
zongqiang.zhang63882752019-11-21 15:21:14 +0800595 }
596 }
zongqiang.zhangd68cf502019-11-22 10:54:27 +0800597 sp_valve_off();
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800598 sprintf(msg,"Á÷Á¿¼ÆÊý:%d",sp_flowsensor_get_count());
599 disp_hint_info_two(pos,"Á÷Á¿²âÊÔ½áÊø",msg,DELAY_TIME3s);
zongqiang.zhang63882752019-11-21 15:21:14 +0800600}
601
602static void test_factory_options(sp_pos_t* pos)
603{
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800604 uint32 ticker;
zongqiang.zhang63882752019-11-21 15:21:14 +0800605 uint8 keycode;
606 uint8 page;
607 uint8 max_cnt;
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800608 uint8 key_press;
zongqiang.zhang63882752019-11-21 15:21:14 +0800609 menu_t menus[] =
610 {
611 {"1.°´¼üУ׼", do_keyboard_calibrate},
612 {"2.°´¼ü²âÊÔ", do_keyboard_test},
613 {"3.¿ªÆô·§ÃÅ", test_valve_on},
614 {"4.¹Ø±Õ·§ÃÅ", test_valve_off},
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800615 {"5.Á÷Á¿²âÊÔ", test_flowsensor},
616 {"6.ͨѶ²âÊÔ", test_link}
zongqiang.zhang63882752019-11-21 15:21:14 +0800617 };
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800618 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800619 page = 0;
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800620 key_press = 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800621 ticker = sp_get_ticker();
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800622 while(sp_get_ticker()-ticker <= DELAY_TIME60s)
zongqiang.zhang63882752019-11-21 15:21:14 +0800623 {
624 sp_feed_dog();
625 keycode = sp_get_key();
626 if(keycode != SP_KEY_NONE)
627 {
628 key_press = 1;
629 switch(keycode)
630 {
631 case SP_KEY_0:
632 if(page < (max_cnt-1))
633 {
634 page++;
635 }
636 break;
637 case SP_KEY_1:
638 case SP_KEY_2:
639 case SP_KEY_3:
640 case SP_KEY_4:
641 case SP_KEY_5:
642 case SP_KEY_6:
643 case SP_KEY_7:
644 case SP_KEY_8:
645 case SP_KEY_9:
646 if(menus[keycode-SP_KEY_1].func != NULL)
647 {
648 menus[keycode-SP_KEY_1].func(pos);
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800649 key_press = 1;
zongqiang.zhang63882752019-11-21 15:21:14 +0800650 }
651 break;
652 case SP_KEY_CLEAR:
653 if(page == 0)
654 {
655 return;
656 }
657 page--;
658 break;
659 default:
660 break;
661 }
662 }
663 if(key_press)
664 {
665 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
666 key_press = 0;
667 ticker = sp_get_ticker();
668 }
669 }
670}
671
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800672void sp_menu_options(sp_pos_t* pos)
673{
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800674 uint32 ticker;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800675 uint8 keycode;
676 uint8 page;
677 uint8 max_cnt;
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800678 uint8 key_press;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800679
680 menu_t menus[] =
681 {
682 {"1.²é¿´²ÎÊý", sp_show_syspara},
zongqiang.zhang63882752019-11-21 15:21:14 +0800683 {"2.¹¤³§²âÊÔ", test_factory_options},
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800684 {"3.ÉèÖÃʱ¼ä", sp_set_devtime},
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800685 {"4.ÊÖ¶¯µÇ¼", sp_login},
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800686 {"5.ÉèÖÃÎïÀíid", sp_set_devphyid},
687 {"6.ÉèÖûúºÅ", sp_set_deviceno},
688 {"7.Çå¿ÕÁ÷Ë®", clear_transdtl},
689 {"8.ÔÚÏßÉý¼¶", manual_upgrade},
690 {"9.»Ö¸´³ö³§", reset_factory}
691 };
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800692 key_press = 1;
zongqiang.zhang81253ea2019-11-21 15:53:16 +0800693 max_cnt = (sizeof(menus)/sizeof(menu_t) -1)/3 + 1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800694 page = 0;
695 ticker = sp_get_ticker();
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800696 while(sp_get_ticker()-ticker <= DELAY_TIME60s)
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800697 {
698 sp_feed_dog();
699 keycode = sp_get_key();
700 if(keycode != SP_KEY_NONE)
701 {
702 key_press = 1;
703 switch(keycode)
704 {
705 case SP_KEY_0:
706 if(page < (max_cnt-1))
707 {
708 page++;
709 }
710 break;
711 case SP_KEY_1:
712 case SP_KEY_2:
713 case SP_KEY_3:
714 case SP_KEY_4:
715 case SP_KEY_5:
716 case SP_KEY_6:
717 case SP_KEY_7:
718 case SP_KEY_8:
719 case SP_KEY_9:
720 if(menus[keycode-SP_KEY_1].func != NULL)
721 {
722 menus[keycode-SP_KEY_1].func(pos);
zongqiang.zhang10678fd2019-11-25 13:37:03 +0800723 key_press = 1;
zongqiang.zhang0c6a0882019-08-07 14:48:21 +0800724 }
725 break;
726 case SP_KEY_CLEAR:
727 if(page == 0)
728 {
729 return;
730 }
731 page--;
732 break;
733 default:
734 break;
735 }
736 }
737 if(key_press)
738 {
739 disp_hint_info_three(pos, menus[page*3].hit, menus[page*3+1].hit, menus[page*3+2].hit, 0);
740 key_press = 0;
741 ticker = sp_get_ticker();
742 }
743 }
744}
zongqiang.zhang63882752019-11-21 15:21:14 +0800745
746