diff -r 8a7f8272516c -r 644a6106d712 thermferm/thermferm.c --- a/thermferm/thermferm.c Sun Nov 08 22:20:42 2015 +0100 +++ b/thermferm/thermferm.c Sat Nov 14 16:52:33 2015 +0100 @@ -29,6 +29,7 @@ #include "simulator.h" #include "lcd-pcf8574.h" #include "lcd-buffer.h" +#include "slcd.h" #include "panel.h" #include "futil.h" #include "xutil.h" @@ -43,6 +44,7 @@ extern int debug; extern sys_config Config; extern int lcdHandle; +extern int slcdHandle; int setupmenu = MENU_NONE; units_list *current_unit = NULL; /* In panel editor this points to the current unit. */ profiles_list *current_profile = NULL; @@ -54,6 +56,8 @@ extern const char UNITMODE[5][8]; extern const char PROFSTATE[4][6]; +extern int sock; + int server(void); void help(void); @@ -106,6 +110,8 @@ lcdPuts(lcdHandle, buf); lcdPosition(lcdHandle, 0, 1); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); } @@ -120,14 +126,15 @@ lcdClear(lcdHandle); lcdPosition(lcdHandle, 0, 0); #endif + slcdClear(slcdHandle); + slcdPosition(slcdHandle, 0, 0); + syslog(LOG_NOTICE, "from menu %d to menu %d", setupmenu, menu); setupmenu = menu; switch (menu) { case MENU_NONE: -#ifdef HAVE_WIRINGPI_H lcd_buf_show(); -#endif break; case MENU_TOP_DEFAULT: @@ -136,12 +143,16 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Up&Down = Escape"); #endif + slcdPuts(slcdHandle, "Setup mode."); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Up&Down = Escape"); break; case MENU_TOP_UNITS: #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "Select units"); #endif + slcdPuts(slcdHandle, "Select units"); break; case MENU_UNITS: @@ -150,42 +161,51 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, current_unit->name); #endif + slcdPuts(slcdHandle, "Choose unit:"); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, current_unit->name); break; case MENU_MODE_OFF: show_mode(); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "New mode OFF"); #endif + slcdPuts(slcdHandle, "New mode OFF"); break; case MENU_MODE_NONE: show_mode(); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "New mode NONE"); #endif + slcdPuts(slcdHandle, "New mode NONE"); break; case MENU_NONE_HEAT: snprintf(buf, Config.lcd_cols, "Set heater %s", current_unit->heater_state ? "OFF":"ON"); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, buf); #endif + slcdPuts(slcdHandle, buf); break; case MENU_NONE_COOL: snprintf(buf, Config.lcd_cols, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON"); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, buf); #endif + slcdPuts(slcdHandle, buf); break; case MENU_NONE_FAN: snprintf(buf, Config.lcd_cols, "Set fan %s", current_unit->fan_state ? "OFF":"ON"); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, buf); #endif + slcdPuts(slcdHandle, buf); break; case MENU_MODE_BEER: show_mode(); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "New mode BEER"); #endif + slcdPuts(slcdHandle, buf); break; case MENU_BEER_TEMP: @@ -193,16 +213,21 @@ lcdPuts(lcdHandle, "Set beer temp"); lcdPosition(lcdHandle, 0, 1); #endif + slcdPuts(slcdHandle, "Set beer temp"); + slcdPosition(slcdHandle, 0, 1); + snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, buf); #endif + slcdPuts(slcdHandle, buf); break; case MENU_MODE_FRIDGE: show_mode(); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "New mode FRIDGE"); #endif + slcdPuts(slcdHandle, "New mode FRIDGE"); break; case MENU_FRIDGE_TEMP: @@ -210,16 +235,20 @@ lcdPuts(lcdHandle, "Set fridge temp"); lcdPosition(lcdHandle, 0, 1); #endif + slcdPuts(slcdHandle, "Set fridge temp"); + slcdPosition(slcdHandle, 0, 1); snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, buf); #endif + slcdPuts(slcdHandle, buf); break; case MENU_MODE_PROFILE: show_mode(); #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "New mode PROFILE"); #endif + slcdPuts(slcdHandle, "New mode PROFILE"); break; case MENU_PROFILE_SELECT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -228,6 +257,9 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Select profile"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Select profile"); break; case MENU_PROFILE_START: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -236,6 +268,9 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Start profile"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Start profile"); break; case MENU_PROFILE_PAUSE: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -244,6 +279,9 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Pause profile"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Pause profile"); break; case MENU_PROFILE_ABORT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -252,6 +290,9 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Abort profile"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Abort profile"); break; case MENU_PROFILE_RESUME: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -260,6 +301,9 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Resume profile"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Resume profile"); break; case MENU_PROFILE_GOOFF: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); @@ -268,24 +312,30 @@ lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "Set profile OFF"); #endif + slcdPuts(slcdHandle, buf); + slcdPosition(slcdHandle, 0, 1); + slcdPuts(slcdHandle, "Set profile OFF"); break; case MENU_TOP_SYS: #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "System menu"); #endif + slcdPuts(slcdHandle, "System menu"); break; case MENU_SYS_HALT: #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "Halt system"); #endif + slcdPuts(slcdHandle, "Halt system"); break; case MENU_SYS_REBOOT: #ifdef HAVE_WIRINGPI_H lcdPuts(lcdHandle, "Reboot system"); #endif + slcdPuts(slcdHandle, "Reboot system"); break; } @@ -303,6 +353,9 @@ piLock(LOCK_LCD); lcdClear(lcdHandle); setBacklight(0); +#endif + slcdClear(slcdHandle); +#ifdef HAVE_WIRINGPI_H piUnlock(LOCK_LCD); #endif } @@ -800,12 +853,12 @@ #ifdef HAVE_WIRINGPI_H if (wiringPiSetup () ) return 1; +#endif if ((rc = initLCD (Config.lcd_cols, Config.lcd_rows))) { fprintf(stderr, "Cannot initialize LCD display, rc=%d\n", rc); return 1; } -#endif if (debug) { /* @@ -1757,6 +1810,7 @@ syslog(LOG_NOTICE, "Unit `%s' stopped in mode %s", unit->name, UNITMODE[unit->mode]); } + syslog(LOG_NOTICE, "Out of loop"); if (debug) fprintf(stdout, (char *)"Out of loop\n"); @@ -1766,6 +1820,12 @@ usleep(1500000); stopLCD(); + if (sock != -1) { + if (shutdown(sock, SHUT_RDWR)) { + syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno)); + } + sock = -1; + } wrconfig(); ulockprog((char *)"thermferm"); return 0;