# HG changeset patch # User Michiel Broek # Date 1407706582 -7200 # Node ID 37d1eb0e1d66cab263dd178af9a0cec9b926a101 # Parent 2317b8d644faabec2ecba1849a68a7b47753080c Added a bunch of panel menus diff -r 2317b8d644fa -r 37d1eb0e1d66 thermferm/lcd-buffer.c --- a/thermferm/lcd-buffer.c Sun Aug 10 21:22:17 2014 +0200 +++ b/thermferm/lcd-buffer.c Sun Aug 10 23:36:22 2014 +0200 @@ -48,7 +48,7 @@ int i = 0; va_start(va_ptr, format); - vsnprintf(buf, Config.lcd_cols * sizeof(char), format, va_ptr); + vsnprintf(buf, (Config.lcd_cols + 1) * sizeof(char), format, va_ptr); va_end(va_ptr); /* 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 diff -r 2317b8d644fa -r 37d1eb0e1d66 thermferm/thermferm.h --- a/thermferm/thermferm.h Sun Aug 10 21:22:17 2014 +0200 +++ b/thermferm/thermferm.h Sun Aug 10 23:36:22 2014 +0200 @@ -44,8 +44,31 @@ #include #include -#define MENU_NONE 0 -#define MENU_TOP 1 +#define MENU_NONE 0 +#define MENU_TOP_DEFAULT 1 +#define MENU_TOP_UNITS 2 +#define MENU_UNITS 21 +#define MENU_MODE_OFF 211 +#define MENU_MODE_NONE 212 +#define MENU_NONE_HEAT 2121 +#define MENU_NONE_COOL 2122 +#define MENU_NONE_FAN 2123 +#define MENU_MODE_BEER 213 +#define MENU_BEER_TEMP 2131 +#define MENU_MODE_FRIDGE 214 +#define MENU_FRIDGE_TEMP 2141 +#define MENU_MODE_PROFILE 215 +#define MENU_PROFILE_SELECT 2151 +#define MENU_PROFILE_START 2152 +#define MENU_PROFILE_PAUSE 2153 +#define MENU_PROFILE_ABORT 2154 +#define MENU_PROFILE_RESUME 2155 +#define MENU_PROFILE_GOOFF 2156 +#define MENU_TOP_SYS 3 +#define MENU_SYS_HALT 31 +#define MENU_SYS_REBOOT 32 +#define MENU_SYS_MASH 33 +#define MENU_SYS_THERMS 34 #endif