diff -r 7639cfa6aec0 -r c6a1a6ca5437 main/task_tft.c --- a/main/task_tft.c Sat May 04 21:18:51 2019 +0200 +++ b/main/task_tft.c Tue May 07 22:03:38 2019 +0200 @@ -13,8 +13,9 @@ spi_lobo_device_handle_t tsspi = NULL; ///< Touchscreen SPI handler extern sButton Buttons[MAXBUTTONS]; ///< 40 buttons on a screen. time_t now; ///< Current time +time_t last = 0; ///< Last time struct tm timeinfo; ///< Current time structure -char s_timer[10]; ///< Timer sctring buffer +char s_timer[10]; ///< Timer string buffer char s_top_msg[64]; ///< Top message string buffer extern float stageTemp; @@ -37,6 +38,7 @@ #define SPI_BUS TFT_HSPI_HOST ///< SPI bus for the TFT, TFT_VSPI_HOST or TFT_HSPI_HOST extern int Main_Screen; +extern int Sub_Screen; extern int Old_Screen; extern int MLT_pin; extern int HLT_pin; @@ -471,10 +473,10 @@ hlt_sp[0] = '\0'; hlt_power[0] = '\0'; } - snprintf(msg, 1023, "{\"main\":\"%d\",\"mlt_led\":\"%d\",\"mlt_pv\":\"%7.3f\",\"mlt_sp\":\"%s\",\"mlt_power\":\"%s\"" \ + snprintf(msg, 1023, "{\"main\":\"%d\",\"sub\":\"%d\",\"mlt_led\":\"%d\",\"mlt_pv\":\"%7.3f\",\"mlt_sp\":\"%s\",\"mlt_power\":\"%s\"" \ ",\"pump_led\":\"%d\",\"hlt_led\":\"%d\",\"hlt_pv\":\"%7.3f\",\"hlt_sp\":\"%s\",\"hlt_power\":\"%s\"" \ ",\"timer\":\"%s\",\"top_msg\":\"%s\"}", - Main_Screen, (MLT_pin) ? 1:0, driver_state->mlt_pv, mlt_sp, mlt_power, + Main_Screen, Sub_Screen, (MLT_pin) ? 1:0, driver_state->mlt_pv, mlt_sp, mlt_power, (Pump_pin) ? 1:0, (HLT_pin) ? 1:0, driver_state->hlt_pv, hlt_sp, hlt_power, s_timer, s_top_msg); @@ -488,7 +490,7 @@ void task_tft(void *pvParameter) { - char msg[32]; + char msg[64]; ESP_LOGI(TAG, "Initialize TFT/Touch task"); @@ -529,7 +531,8 @@ /* * With each screenchange, remove the timer too. */ - snprintf(msg, 31, "{\"main\":\"%d\",\"timer\":\"\"}", Main_Screen); + Sub_Screen = 0; + snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); ws_server_send_text_clients("/ws", msg, strlen(msg)); ESP_LOGI(TAG, "Change screen %d to %d", Old_Screen, Main_Screen); @@ -619,7 +622,8 @@ Updates_Init(); break; - case MAIN_AUTO_INIT: + case MAIN_AUTO_INIT1: + case MAIN_AUTO_INIT2: case MAIN_AUTO_DELAYSTART: case MAIN_AUTO_HEATUP: case MAIN_AUTO_MASH_IN: @@ -667,17 +671,20 @@ } switch (Buttons_Scan()) { case 0: Main_Screen = MAIN_MANUAL_INIT; break; - case 1: Main_Screen = MAIN_AUTO_INIT; break; - case 2: Main_Screen = MAIN_INFO; break; - case 3: Main_Screen = MAIN_TOOLS; break; + case 1: Main_Screen = MAIN_AUTO_INIT1; break; + case 2: Main_Screen = MAIN_INFO; break; + case 3: Main_Screen = MAIN_TOOLS; break; default: break; } - if (System_TimeOk) { + if (System_TimeOk && (now != last)) { + last = now; strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); TFT_setFont(DEJAVU18_FONT, NULL); _bg = TFT_BLACK; _fg = TFT_ORANGE; TFT_print(strftime_buf, CENTER, 125); + snprintf(msg, 63, "{\"timer\":\"%s\"}", strftime_buf); // Fix string termination and only send once/second. + ws_server_send_text_clients("/ws", msg, strlen(msg)); } break; @@ -736,7 +743,8 @@ } break; - case MAIN_AUTO_INIT: + case MAIN_AUTO_INIT1: + case MAIN_AUTO_INIT2: case MAIN_AUTO_DELAYSTART: case MAIN_AUTO_HEATUP: case MAIN_AUTO_MASH_IN: