diff -r 9a14d6b2de7f -r ca18ff45deba thermferm/thermferm.c --- a/thermferm/thermferm.c Sun Aug 10 12:09:07 2014 +0200 +++ b/thermferm/thermferm.c Sun Aug 10 13:26:35 2014 +0200 @@ -37,9 +37,6 @@ int tempA = 80; int tempB = 80; -key_t key = 5680; /* key to be passed to shmget() */ -int shmid; - int my_shutdown = FALSE; static pid_t pgrp, mypid; @@ -48,6 +45,8 @@ #ifdef HAVE_WIRINGPI_H extern int lcdHandle; extern unsigned char lcdbuf[MAX_LCDS][20][4]; +int setupmenu = MENU_NONE; + #endif int lcdupdate; #ifndef HAVE_WIRINGPI_H @@ -257,7 +256,7 @@ float err = 0.0, sp, pv, P_err, D_err, Out; #ifdef HAVE_WIRINGPI_H struct tm *tm; - int row; + int row, key; #else long t = 0; #endif @@ -565,8 +564,10 @@ } #ifdef HAVE_WIRINGPI_H - lcd_buf_show(); + if (setupmenu == MENU_NONE) + lcd_buf_show(); #endif + if (seconds == 60) { seconds = 0; @@ -625,8 +626,33 @@ } #ifdef HAVE_WIRINGPI_H - // FIXME: not in editmode. - lcd_buf_step(); + /* + * Handle panel key events. + */ + key = keycheck(); + + switch (setupmenu) { + 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"); + } + break; + + case MENU_TOP: + if (key == KEY_ESCAPE) { + setupmenu = MENU_NONE; + lcd_buf_show(); + } + break; + } + #endif usleep(100000);