diff -r 2317b8d644fa -r 37d1eb0e1d66 thermferm/thermferm.c --- a/thermferm/thermferm.c Sun Aug 10 21:22:17 2014 +0200 +++ b/thermferm/thermferm.c Sun Aug 10 23:36:22 2014 +0200 @@ -90,6 +90,94 @@ +void go_menu(int menu) +{ + mb_lcdClear(lcdHandle); + lcdPosition(lcdHandle, 0, 0); + setupmenu = menu; + + switch (menu) { + case MENU_NONE: lcd_buf_show(); + break; + + case MENU_TOP_DEFAULT: mb_lcdPuts(lcdHandle, "Setup mode."); + lcdPosition(lcdHandle, 0, 1); + mb_lcdPuts(lcdHandle, "Up&Down = Escape"); + break; + + case MENU_TOP_UNITS: mb_lcdPuts(lcdHandle, "Select units"); + break; + + case MENU_UNITS: mb_lcdPuts(lcdHandle, "Choose unit:"); + break; + + case MENU_MODE_OFF: mb_lcdPuts(lcdHandle, "Set unit OFF"); + break; + + case MENU_MODE_NONE: mb_lcdPuts(lcdHandle, "Set unit NONE"); + break; + + case MENU_NONE_HEAT: mb_lcdPuts(lcdHandle, "Switch heater"); + break; + + case MENU_NONE_COOL: mb_lcdPuts(lcdHandle, "Switch cooler"); + break; + + case MENU_NONE_FAN: mb_lcdPuts(lcdHandle, "Switch Fan"); + break; + + case MENU_MODE_BEER: mb_lcdPuts(lcdHandle, "Set unit BEER"); + break; + + case MENU_BEER_TEMP: mb_lcdPuts(lcdHandle, "Set beer temp"); + break; + + case MENU_MODE_FRIDGE: mb_lcdPuts(lcdHandle, "Set unit FRIDGE"); + break; + + case MENU_FRIDGE_TEMP: mb_lcdPuts(lcdHandle, "Set fridge temp"); + break; + + case MENU_MODE_PROFILE: mb_lcdPuts(lcdHandle, "Set unit PROFILE"); + break; + + case MENU_PROFILE_SELECT: mb_lcdPuts(lcdHandle, "Select profile"); + break; + + case MENU_PROFILE_START: mb_lcdPuts(lcdHandle, "Start profile"); + break; + + case MENU_PROFILE_PAUSE: mb_lcdPuts(lcdHandle, "Pause profile"); + break; + + case MENU_PROFILE_ABORT: mb_lcdPuts(lcdHandle, "Abort profile"); + break; + + case MENU_PROFILE_RESUME: mb_lcdPuts(lcdHandle, "Resume profile"); + break; + + case MENU_PROFILE_GOOFF: mb_lcdPuts(lcdHandle, "Set profile OFF"); + break; + + case MENU_TOP_SYS: mb_lcdPuts(lcdHandle, "System menu"); + break; + + case MENU_SYS_HALT: mb_lcdPuts(lcdHandle, "Halt system"); + break; + + case MENU_SYS_REBOOT: mb_lcdPuts(lcdHandle, "Reboot system"); + break; + + case MENU_SYS_MASH: mb_lcdPuts(lcdHandle, "Start Mash program"); + break; + + case MENU_SYS_THERMS: mb_lcdPuts(lcdHandle, "Start Thermometers"); + break; + } +} + + + #ifdef HAVE_WIRINGPI_H void stopLCD(void) { @@ -659,22 +747,75 @@ case MENU_NONE: if ((key == KEY_DOWN) || (key == KEY_UP)) lcd_buf_step(key); - if ((key == KEY_CONFIRM) && (setupmenu == MENU_NONE)) { - setupmenu = MENU_TOP; - mb_lcdClear(lcdHandle); - lcdPosition(lcdHandle, 0, 0); - mb_lcdPuts(lcdHandle, "Setup mode."); - lcdPosition(lcdHandle, 0, 1); - mb_lcdPuts(lcdHandle, "Up&Down = Escape"); - } + if ((key == KEY_CONFIRM) && (setupmenu == MENU_NONE)) + go_menu(MENU_TOP_DEFAULT); + break; + + case MENU_TOP_DEFAULT: + if (key == KEY_ESCAPE) + go_menu(MENU_NONE); + if (key == KEY_DOWN) + go_menu(MENU_TOP_UNITS); + if (key == KEY_UP) + go_menu(MENU_TOP_SYS); + break; + + case MENU_TOP_UNITS: + if (key == KEY_ESCAPE) + go_menu(MENU_NONE); + if (key == KEY_DOWN) + go_menu(MENU_TOP_SYS); + if (key == KEY_UP) + go_menu(MENU_TOP_DEFAULT); + break; + + case MENU_TOP_SYS: + if (key == KEY_ESCAPE) + go_menu(MENU_NONE); + if (key == KEY_DOWN) + go_menu(MENU_TOP_DEFAULT); + if (key == KEY_UP) + go_menu(MENU_TOP_UNITS); + if (key == KEY_ENTER) + go_menu(MENU_SYS_HALT); break; - case MENU_TOP: - if (key == KEY_ESCAPE) { - setupmenu = MENU_NONE; - lcd_buf_show(); - } + case MENU_SYS_HALT: + if (key == KEY_ESCAPE) + go_menu(MENU_TOP_SYS); + if (key == KEY_DOWN) + go_menu(MENU_SYS_REBOOT); + if (key == KEY_UP) + go_menu(MENU_SYS_THERMS); + break; + + case MENU_SYS_REBOOT: + if (key == KEY_ESCAPE) + go_menu(MENU_TOP_SYS); + if (key == KEY_DOWN) + go_menu(MENU_SYS_MASH); + if (key == KEY_UP) + go_menu(MENU_SYS_HALT); break; + + case MENU_SYS_MASH: + if (key == KEY_ESCAPE) + go_menu(MENU_TOP_SYS); + if (key == KEY_DOWN) + go_menu(MENU_SYS_THERMS); + if (key == KEY_UP) + go_menu(MENU_SYS_REBOOT); + break; + + case MENU_SYS_THERMS: + if (key == KEY_ESCAPE) + go_menu(MENU_TOP_SYS); + if (key == KEY_DOWN) + go_menu(MENU_SYS_HALT); + if (key == KEY_UP) + go_menu(MENU_SYS_MASH); + break; + } #endif