main/task_tft.c

branch
novnc
changeset 42
c6a1a6ca5437
parent 40
71e06f6d80fd
child 49
4ec04c6f1551
--- 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:

mercurial