Support menu timeout
This commit is contained in:
parent
f7fcaf0ab8
commit
a267e2caf6
|
@ -13,9 +13,19 @@
|
||||||
void init_nick();
|
void init_nick();
|
||||||
void fancyNickname();
|
void fancyNickname();
|
||||||
|
|
||||||
|
#include "lcd/allfonts.h"
|
||||||
|
void forLoadables(int i){
|
||||||
|
if(i){
|
||||||
|
lcdSetPixel(0,0);
|
||||||
|
font=&Font_Invaders;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
void main_final(void) {
|
void main_final(void) {
|
||||||
//checkFirstBoot();
|
//checkFirstBoot();
|
||||||
init_final();
|
init_final();
|
||||||
|
forLoadables(0);
|
||||||
|
menuflags|=MENU_TIMEOUT;
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
#ifndef FINAL
|
#ifndef FINAL
|
||||||
|
|
|
@ -152,6 +152,7 @@ char isNight(void);
|
||||||
uint8_t getInput(void);
|
uint8_t getInput(void);
|
||||||
uint8_t getInputRaw(void);
|
uint8_t getInputRaw(void);
|
||||||
uint8_t getInputWait(void);
|
uint8_t getInputWait(void);
|
||||||
|
uint8_t getInputWaitTimeout(int timeout);
|
||||||
void getInputWaitRelease(void);
|
void getInputWaitRelease(void);
|
||||||
|
|
||||||
// stringin.c
|
// stringin.c
|
||||||
|
@ -177,6 +178,9 @@ struct MENU {
|
||||||
struct MENU_DEF entries[];
|
struct MENU_DEF entries[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MENU_TIMEOUT (1<<0)
|
||||||
|
extern uint8_t menuflags;
|
||||||
|
|
||||||
|
|
||||||
void handleMenu(const struct MENU *the_menu);
|
void handleMenu(const struct MENU *the_menu);
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,18 @@ uint8_t getInputWait(void) {
|
||||||
return key;
|
return key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint8_t getInputWaitTimeout(int timeout) {
|
||||||
|
uint8_t key;
|
||||||
|
int end=_timectr+timeout*(1000/SYSTICKSPEED);
|
||||||
|
while ((key=getInputRaw())==BTN_NONE){
|
||||||
|
if(_timectr>end)
|
||||||
|
break;
|
||||||
|
work_queue();
|
||||||
|
};
|
||||||
|
delayms_queue(10); /* Delay a little more to debounce */
|
||||||
|
return key;
|
||||||
|
};
|
||||||
|
|
||||||
void getInputWaitRelease(void) {
|
void getInputWaitRelease(void) {
|
||||||
while (getInputRaw()!=BTN_NONE)
|
while (getInputRaw()!=BTN_NONE)
|
||||||
work_queue();
|
work_queue();
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
|
||||||
|
uint8_t menuflags=0;
|
||||||
|
|
||||||
void handleMenu(const struct MENU *the_menu) {
|
void handleMenu(const struct MENU *the_menu) {
|
||||||
uint8_t back = 0;
|
uint8_t back = 0;
|
||||||
int8_t menuselection = 0;
|
int8_t menuselection = 0;
|
||||||
|
@ -38,7 +40,7 @@ void handleMenu(const struct MENU *the_menu) {
|
||||||
}
|
}
|
||||||
lcdRefresh();
|
lcdRefresh();
|
||||||
|
|
||||||
switch (getInputWait()) {
|
switch (getInputWaitTimeout((menuflags&MENU_TIMEOUT)?15:0)) {
|
||||||
case BTN_UP:
|
case BTN_UP:
|
||||||
menuselection--;
|
menuselection--;
|
||||||
if (menuselection < current_offset) {
|
if (menuselection < current_offset) {
|
||||||
|
@ -78,12 +80,13 @@ void handleMenu(const struct MENU *the_menu) {
|
||||||
getInputWait();
|
getInputWait();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case BTN_NONE: /* timeout */
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
/* no button pressed */
|
/* NOTREACHED */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
getInputWaitRelease();
|
getInputWaitRelease();
|
||||||
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue