main/task_tft.c

branch
stable
changeset 46
aaa095986ede
parent 42
c6a1a6ca5437
child 49
4ec04c6f1551
equal deleted inserted replaced
35:1625e565ca31 46:aaa095986ede
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;
28 extern uint16_t Steady; 29 extern uint16_t Steady;
29 esp_timer_handle_t timerHandle; ///< Timer handler 30 esp_timer_handle_t timerHandle; ///< Timer handler
30 extern bool _NewMinute; 31 extern bool _NewMinute;
31 extern bool _UseHLT; 32 extern bool _UseHLT;
32 extern bool System_TimeOk; 33 extern bool System_TimeOk;
34 extern const esp_app_desc_t *app_desc;
33 35
34 static const char *TAG = "task_tft"; 36 static const char *TAG = "task_tft";
35 37
36 #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
37 39
38 extern int Main_Screen; 40 extern int Main_Screen;
41 extern int Sub_Screen;
39 extern int Old_Screen; 42 extern int Old_Screen;
40 extern int MLT_pin; 43 extern int MLT_pin;
41 extern int HLT_pin; 44 extern int HLT_pin;
42 extern int Pump_pin; 45 extern int Pump_pin;
43 extern DS18B20_State *ds18b20_state; 46 extern DS18B20_State *ds18b20_state;
468 snprintf(hlt_power, 15, "%3d%%", driver_state->hlt_power); 471 snprintf(hlt_power, 15, "%3d%%", driver_state->hlt_power);
469 } else { 472 } else {
470 hlt_sp[0] = '\0'; 473 hlt_sp[0] = '\0';
471 hlt_power[0] = '\0'; 474 hlt_power[0] = '\0';
472 } 475 }
473 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\"" \
474 ",\"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\"" \
475 ",\"timer\":\"%s\",\"top_msg\":\"%s\"}", 478 ",\"timer\":\"%s\",\"top_msg\":\"%s\"}",
476 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,
477 (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,
478 s_timer, s_top_msg); 481 s_timer, s_top_msg);
479 482
480 xSemaphoreGive(xSemaphoreDriver); 483 xSemaphoreGive(xSemaphoreDriver);
481 ws_server_send_text_client(client, msg, strlen(msg)); 484 ws_server_send_text_client(client, msg, strlen(msg));
485 488
486 489
487 490
488 void task_tft(void *pvParameter) 491 void task_tft(void *pvParameter)
489 { 492 {
490 char msg[32]; 493 char msg[64];
491 494
492 ESP_LOGI(TAG, "Initialize TFT/Touch task"); 495 ESP_LOGI(TAG, "Initialize TFT/Touch task");
493 496
494 /* 497 /*
495 * Task loop. Read touchscreen events. 498 * Task loop. Read touchscreen events.
526 } 529 }
527 530
528 /* 531 /*
529 * With each screenchange, remove the timer too. 532 * With each screenchange, remove the timer too.
530 */ 533 */
531 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);
532 ws_server_send_text_clients("/ws", msg, strlen(msg)); 536 ws_server_send_text_clients("/ws", msg, strlen(msg));
533 537
534 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);
535 _bg = TFT_BLACK; 539 _bg = TFT_BLACK;
536 TFT_fillScreen(_bg); 540 TFT_fillScreen(_bg);
555 case MAIN_MODE_CALIBRATION: 559 case MAIN_MODE_CALIBRATION:
556 Calibration_Init(); 560 Calibration_Init();
557 break; 561 break;
558 562
559 case MAIN_INFO: 563 case MAIN_INFO:
560 sprintf(temp_buf, "BrewBoard %s", VERSION); 564 sprintf(temp_buf, "BrewBoard %s", app_desc->version);
561 TopMessage(temp_buf); 565 TopMessage(temp_buf);
562 _fg = TFT_YELLOW; 566 _fg = TFT_YELLOW;
563 TFT_setFont(UBUNTU16_FONT, NULL); 567 TFT_setFont(UBUNTU16_FONT, NULL);
564 TFT_print("Written by Michiel Broek (C) 2018\r\n\n", 0, 50); 568 TFT_print("Written by Michiel Broek (C) 2018\r\n\n", 0, 50);
565 // ------------------------------------- 569 // -------------------------------------
566 _fg = TFT_ORANGE; 570 _fg = TFT_ORANGE;
567 TFT_print("Parts are written by Chris Morgan,\r\n", 0, LASTY); 571 TFT_print("Parts are written by Chris Morgan,\r\n", 0, LASTY);
568 TFT_print("Brett Beauregard, Chris Garry, LoBo,\r\n", 0, LASTY); 572 TFT_print("Brett Beauregard, Blake Felt, LoBo,\r\n", 0, LASTY);
569 TFT_print("and David Antliff.\r\n", 0, LASTY); 573 TFT_print("and David Antliff.\r\n", 0, LASTY);
570 ShowInteger(1,140, "Free memory", " bytes", esp_get_free_heap_size()); 574 ShowInteger(1,140, "Free memory", " bytes", esp_get_free_heap_size());
571 ShowText(1,158, "IDF version", (char *)esp_get_idf_version()); 575 ShowText(1,158, "IDF version", (char *)esp_get_idf_version());
572 Buttons_Add(130, 200, 60, 40, "Ok", 0); 576 Buttons_Add(130, 200, 60, 40, "Ok", 0);
573 Buttons[0].dark = true; 577 Buttons[0].dark = true;
616 620
617 case MAIN_TOOLS_UPDATES: 621 case MAIN_TOOLS_UPDATES:
618 Updates_Init(); 622 Updates_Init();
619 break; 623 break;
620 624
621 case MAIN_AUTO_INIT: 625 case MAIN_AUTO_INIT1:
626 case MAIN_AUTO_INIT2:
622 case MAIN_AUTO_DELAYSTART: 627 case MAIN_AUTO_DELAYSTART:
623 case MAIN_AUTO_HEATUP: 628 case MAIN_AUTO_HEATUP:
624 case MAIN_AUTO_MASH_IN: 629 case MAIN_AUTO_MASH_IN:
625 case MAIN_AUTO_MASH_1: 630 case MAIN_AUTO_MASH_1:
626 case MAIN_AUTO_MASH_2: 631 case MAIN_AUTO_MASH_2:
664 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) { 669 if ((equipment.SSR2 == SSR2_HLT_SHARE) || (equipment.SSR2 == SSR2_HLT_IND)) {
665 HLT_info(71, 150, true, false); 670 HLT_info(71, 150, true, false);
666 } 671 }
667 switch (Buttons_Scan()) { 672 switch (Buttons_Scan()) {
668 case 0: Main_Screen = MAIN_MANUAL_INIT; break; 673 case 0: Main_Screen = MAIN_MANUAL_INIT; break;
669 case 1: Main_Screen = MAIN_AUTO_INIT; break; 674 case 1: Main_Screen = MAIN_AUTO_INIT1; break;
670 case 2: Main_Screen = MAIN_INFO; break; 675 case 2: Main_Screen = MAIN_INFO; break;
671 case 3: Main_Screen = MAIN_TOOLS; break; 676 case 3: Main_Screen = MAIN_TOOLS; break;
672 default: break; 677 default: break;
673 } 678 }
674 if (System_TimeOk) { 679 if (System_TimeOk && (now != last)) {
680 last = now;
675 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); 681 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
676 TFT_setFont(DEJAVU18_FONT, NULL); 682 TFT_setFont(DEJAVU18_FONT, NULL);
677 _bg = TFT_BLACK; 683 _bg = TFT_BLACK;
678 _fg = TFT_ORANGE; 684 _fg = TFT_ORANGE;
679 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));
680 } 688 }
681 break; 689 break;
682 690
683 case MAIN_MODE_CALIBRATION: 691 case MAIN_MODE_CALIBRATION:
684 Calibration_Loop(); 692 Calibration_Loop();
733 if (Buttons_Scan() == 0) { 741 if (Buttons_Scan() == 0) {
734 Main_Screen = MAIN_MODE_FREE; 742 Main_Screen = MAIN_MODE_FREE;
735 } 743 }
736 break; 744 break;
737 745
738 case MAIN_AUTO_INIT: 746 case MAIN_AUTO_INIT1:
747 case MAIN_AUTO_INIT2:
739 case MAIN_AUTO_DELAYSTART: 748 case MAIN_AUTO_DELAYSTART:
740 case MAIN_AUTO_HEATUP: 749 case MAIN_AUTO_HEATUP:
741 case MAIN_AUTO_MASH_IN: 750 case MAIN_AUTO_MASH_IN:
742 case MAIN_AUTO_MASH_1: 751 case MAIN_AUTO_MASH_1:
743 case MAIN_AUTO_MASH_2: 752 case MAIN_AUTO_MASH_2:

mercurial