diff --git a/firmware/l0dable/config.c b/firmware/l0dable/config.c new file mode 100644 index 0000000..a0a31ae --- /dev/null +++ b/firmware/l0dable/config.c @@ -0,0 +1,126 @@ +#include + +#include "basic/basic.h" +#include "basic/config.h" + +#include "lcd/print.h" +#include "lcd/render.h" +#include "lcd/display.h" + +#include "filesystem/ff.h" + +#include + +/**************************************************************************/ + +#include "usetable.h" + +//# MENU config +void ram(void){ + uint8_t numentries = 0; + signed char menuselection = 0; + uint8_t visible_lines = 0; + uint8_t current_offset = 0; + + for (int i=0;the_config[i].name!=NULL;i++){ + if(!the_config[i].disabled) + numentries++; + }; + + visible_lines = ((RESY/getFontHeight())-1)/2; + + while (1) { + // Display current menu page + lcdClear(); + lcdPrint("Config"); + + lcdSetCrsrX(60); + lcdPrint("["); + lcdPrint(IntToStr((current_offset/visible_lines)+1,1,0)); + lcdPrint("/"); + lcdPrint(IntToStr(((numentries-1)/visible_lines)+1,1,0)); + lcdPrint("]"); + lcdNl(); + + lcdNl(); + + uint8_t j=0; + for (uint8_t i=0;i"); + }; + lcdRefresh(); + } + + switch (getInputWaitRepeat()) { + case BTN_UP: + menuselection--; + if (menuselection < current_offset) { + if (menuselection < 0) { + menuselection = numentries-1; + current_offset = ((numentries-1)/visible_lines) * visible_lines; + } else { + current_offset -= visible_lines; + } + } + break; + case BTN_DOWN: + menuselection++; + if (menuselection > (current_offset + visible_lines-1) || menuselection >= numentries) { + if (menuselection >= numentries) { + menuselection = 0; + current_offset = 0; + } else { + current_offset += visible_lines; + } + } + break; + case BTN_LEFT: + if(the_config[t].value > + the_config[t].min) + the_config[t].value--; + if(the_config[t].value > the_config[t].max) + the_config[t].value= + the_config[t].max; + applyConfig(); + break; + case BTN_RIGHT: + if(the_config[t].value < + the_config[t].max) + the_config[t].value++; + if(the_config[t].value < the_config[t].min) + the_config[t].value= + the_config[t].min; + applyConfig(); + break; + case BTN_ENTER: + if(menuselection==0) + saveConfig(); + return; + } + } + /* NOTREACHED */ +}