11 |
11 |
12 spi_lobo_device_handle_t spi; ///< TFT screen SPI handler |
12 spi_lobo_device_handle_t spi; ///< TFT screen SPI handler |
13 spi_lobo_device_handle_t tsspi = NULL; ///< Touchscreen SPI handler |
13 spi_lobo_device_handle_t tsspi = NULL; ///< Touchscreen SPI handler |
14 extern sButton Buttons[MAXBUTTONS]; ///< 40 buttons on a screen. |
14 extern sButton Buttons[MAXBUTTONS]; ///< 40 buttons on a screen. |
15 time_t now; ///< Current time |
15 time_t now; ///< Current time |
|
16 time_t last = 0; ///< Last time |
16 struct tm timeinfo; ///< Current time structure |
17 struct tm timeinfo; ///< Current time structure |
17 char s_timer[10]; ///< Timer sctring buffer |
18 char s_timer[10]; ///< Timer string buffer |
18 char s_top_msg[64]; ///< Top message string buffer |
19 char s_top_msg[64]; ///< Top message string buffer |
19 |
20 |
20 extern float stageTemp; |
21 extern float stageTemp; |
21 extern uint16_t stageTime; |
22 extern uint16_t stageTime; |
22 extern uint16_t TimeWhirlPool; |
23 extern uint16_t TimeWhirlPool; |
35 static const char *TAG = "task_tft"; |
36 static const char *TAG = "task_tft"; |
36 |
37 |
37 #define SPI_BUS TFT_HSPI_HOST ///< SPI bus for the TFT, TFT_VSPI_HOST or TFT_HSPI_HOST |
38 #define SPI_BUS TFT_HSPI_HOST ///< SPI bus for the TFT, TFT_VSPI_HOST or TFT_HSPI_HOST |
38 |
39 |
39 extern int Main_Screen; |
40 extern int Main_Screen; |
|
41 extern int Sub_Screen; |
40 extern int Old_Screen; |
42 extern int Old_Screen; |
41 extern int MLT_pin; |
43 extern int MLT_pin; |
42 extern int HLT_pin; |
44 extern int HLT_pin; |
43 extern int Pump_pin; |
45 extern int Pump_pin; |
44 extern DS18B20_State *ds18b20_state; |
46 extern DS18B20_State *ds18b20_state; |
469 snprintf(hlt_power, 15, "%3d%%", driver_state->hlt_power); |
471 snprintf(hlt_power, 15, "%3d%%", driver_state->hlt_power); |
470 } else { |
472 } else { |
471 hlt_sp[0] = '\0'; |
473 hlt_sp[0] = '\0'; |
472 hlt_power[0] = '\0'; |
474 hlt_power[0] = '\0'; |
473 } |
475 } |
474 snprintf(msg, 1023, "{\"main\":\"%d\",\"mlt_led\":\"%d\",\"mlt_pv\":\"%7.3f\",\"mlt_sp\":\"%s\",\"mlt_power\":\"%s\"" \ |
476 snprintf(msg, 1023, "{\"main\":\"%d\",\"sub\":\"%d\",\"mlt_led\":\"%d\",\"mlt_pv\":\"%7.3f\",\"mlt_sp\":\"%s\",\"mlt_power\":\"%s\"" \ |
475 ",\"pump_led\":\"%d\",\"hlt_led\":\"%d\",\"hlt_pv\":\"%7.3f\",\"hlt_sp\":\"%s\",\"hlt_power\":\"%s\"" \ |
477 ",\"pump_led\":\"%d\",\"hlt_led\":\"%d\",\"hlt_pv\":\"%7.3f\",\"hlt_sp\":\"%s\",\"hlt_power\":\"%s\"" \ |
476 ",\"timer\":\"%s\",\"top_msg\":\"%s\"}", |
478 ",\"timer\":\"%s\",\"top_msg\":\"%s\"}", |
477 Main_Screen, (MLT_pin) ? 1:0, driver_state->mlt_pv, mlt_sp, mlt_power, |
479 Main_Screen, Sub_Screen, (MLT_pin) ? 1:0, driver_state->mlt_pv, mlt_sp, mlt_power, |
478 (Pump_pin) ? 1:0, (HLT_pin) ? 1:0, driver_state->hlt_pv, hlt_sp, hlt_power, |
480 (Pump_pin) ? 1:0, (HLT_pin) ? 1:0, driver_state->hlt_pv, hlt_sp, hlt_power, |
479 s_timer, s_top_msg); |
481 s_timer, s_top_msg); |
480 |
482 |
481 xSemaphoreGive(xSemaphoreDriver); |
483 xSemaphoreGive(xSemaphoreDriver); |
482 ws_server_send_text_client(client, msg, strlen(msg)); |
484 ws_server_send_text_client(client, msg, strlen(msg)); |
527 } |
529 } |
528 |
530 |
529 /* |
531 /* |
530 * With each screenchange, remove the timer too. |
532 * With each screenchange, remove the timer too. |
531 */ |
533 */ |
532 snprintf(msg, 31, "{\"main\":\"%d\",\"timer\":\"\"}", Main_Screen); |
534 Sub_Screen = 0; |
|
535 snprintf(msg, 63, "{\"main\":\"%d\",\"sub\":\"%d\",\"timer\":\"\"}", Main_Screen, Sub_Screen); |
533 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
536 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
534 |
537 |
535 ESP_LOGI(TAG, "Change screen %d to %d", Old_Screen, Main_Screen); |
538 ESP_LOGI(TAG, "Change screen %d to %d", Old_Screen, Main_Screen); |
536 _bg = TFT_BLACK; |
539 _bg = TFT_BLACK; |
537 TFT_fillScreen(_bg); |
540 TFT_fillScreen(_bg); |
617 |
620 |
618 case MAIN_TOOLS_UPDATES: |
621 case MAIN_TOOLS_UPDATES: |
619 Updates_Init(); |
622 Updates_Init(); |
620 break; |
623 break; |
621 |
624 |
622 case MAIN_AUTO_INIT: |
625 case MAIN_AUTO_INIT1: |
|
626 case MAIN_AUTO_INIT2: |
623 case MAIN_AUTO_DELAYSTART: |
627 case MAIN_AUTO_DELAYSTART: |
624 case MAIN_AUTO_HEATUP: |
628 case MAIN_AUTO_HEATUP: |
625 case MAIN_AUTO_MASH_IN: |
629 case MAIN_AUTO_MASH_IN: |
626 case MAIN_AUTO_MASH_1: |
630 case MAIN_AUTO_MASH_1: |
627 case MAIN_AUTO_MASH_2: |
631 case MAIN_AUTO_MASH_2: |
665 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) { |
669 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) { |
666 HLT_info(71, 150, true, false); |
670 HLT_info(71, 150, true, false); |
667 } |
671 } |
668 switch (Buttons_Scan()) { |
672 switch (Buttons_Scan()) { |
669 case 0: Main_Screen = MAIN_MANUAL_INIT; break; |
673 case 0: Main_Screen = MAIN_MANUAL_INIT; break; |
670 case 1: Main_Screen = MAIN_AUTO_INIT; break; |
674 case 1: Main_Screen = MAIN_AUTO_INIT1; break; |
671 case 2: Main_Screen = MAIN_INFO; break; |
675 case 2: Main_Screen = MAIN_INFO; break; |
672 case 3: Main_Screen = MAIN_TOOLS; break; |
676 case 3: Main_Screen = MAIN_TOOLS; break; |
673 default: break; |
677 default: break; |
674 } |
678 } |
675 if (System_TimeOk) { |
679 if (System_TimeOk && (now != last)) { |
|
680 last = now; |
676 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); |
681 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); |
677 TFT_setFont(DEJAVU18_FONT, NULL); |
682 TFT_setFont(DEJAVU18_FONT, NULL); |
678 _bg = TFT_BLACK; |
683 _bg = TFT_BLACK; |
679 _fg = TFT_ORANGE; |
684 _fg = TFT_ORANGE; |
680 TFT_print(strftime_buf, CENTER, 125); |
685 TFT_print(strftime_buf, CENTER, 125); |
|
686 snprintf(msg, 63, "{\"timer\":\"%s\"}", strftime_buf); // Fix string termination and only send once/second. |
|
687 ws_server_send_text_clients("/ws", msg, strlen(msg)); |
681 } |
688 } |
682 break; |
689 break; |
683 |
690 |
684 case MAIN_MODE_CALIBRATION: |
691 case MAIN_MODE_CALIBRATION: |
685 Calibration_Loop(); |
692 Calibration_Loop(); |
734 if (Buttons_Scan() == 0) { |
741 if (Buttons_Scan() == 0) { |
735 Main_Screen = MAIN_MODE_FREE; |
742 Main_Screen = MAIN_MODE_FREE; |
736 } |
743 } |
737 break; |
744 break; |
738 |
745 |
739 case MAIN_AUTO_INIT: |
746 case MAIN_AUTO_INIT1: |
|
747 case MAIN_AUTO_INIT2: |
740 case MAIN_AUTO_DELAYSTART: |
748 case MAIN_AUTO_DELAYSTART: |
741 case MAIN_AUTO_HEATUP: |
749 case MAIN_AUTO_HEATUP: |
742 case MAIN_AUTO_MASH_IN: |
750 case MAIN_AUTO_MASH_IN: |
743 case MAIN_AUTO_MASH_1: |
751 case MAIN_AUTO_MASH_1: |
744 case MAIN_AUTO_MASH_2: |
752 case MAIN_AUTO_MASH_2: |