main/task_user.c

changeset 26
8a3696620c0a
parent 25
cc7c423f03fb
child 27
8bb63daa7b46
equal deleted inserted replaced
25:cc7c423f03fb 26:8a3696620c0a
31 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore 31 extern SemaphoreHandle_t xSemaphoreADC; ///< ADC lock semaphore
32 extern WIFI_State *wifi_state; ///< WiFi state 32 extern WIFI_State *wifi_state; ///< WiFi state
33 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore 33 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore
34 extern int count_pub; ///< Published MQTT messages in transit 34 extern int count_pub; ///< Published MQTT messages in transit
35 extern int Main_Loop1; ///< Main measure loop 35 extern int Main_Loop1; ///< Main measure loop
36 36 extern int update_running; ///< If update is running
37 37
38 const int TASK_USER_COLD = BIT0; ///< System cold start 38 const int TASK_USER_COLD = BIT0; ///< System cold start
39 const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep 39 const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep
40 const int TASK_USER_BUSY = BIT2; ///< User interface is busy doing something. 40 const int TASK_USER_BUSY = BIT2; ///< User interface is busy doing something.
41 41
53 53
54 void TimerCallback(void *arg) 54 void TimerCallback(void *arg)
55 { 55 {
56 SecsCount++; 56 SecsCount++;
57 if ((SecsCount % 60) == 0) { 57 if ((SecsCount % 60) == 0) {
58 if (Main_Loop1 == ML1_DONE) 58 if (Main_Loop1 == ML1_DONE && update_running == 0)
59 Main_Loop1 = ML1_INIT; 59 Main_Loop1 = ML1_INIT;
60 } 60 }
61 61
62 if (UserTimer == 1) { 62 if (UserTimer == 1) {
63 ESP_LOGI(TAG, "User inactivity timeout"); 63 ESP_LOGI(TAG, "User inactivity timeout");
388 u8g2_DrawUTF8(&u8g2, (128 - w) / 2,40, buf); 388 u8g2_DrawUTF8(&u8g2, (128 - w) / 2,40, buf);
389 389
390 sprintf(buf, "%.2f bar", units[no].pressure / 1000.0); 390 sprintf(buf, "%.2f bar", units[no].pressure / 1000.0);
391 w = u8g2_GetUTF8Width(&u8g2, buf); 391 w = u8g2_GetUTF8Width(&u8g2, buf);
392 u8g2_DrawUTF8(&u8g2, (128 - w) / 2,63, buf); 392 u8g2_DrawUTF8(&u8g2, (128 - w) / 2,63, buf);
393 u8g2_SendBuffer(&u8g2);
393 394
394 xSemaphoreGive(xSemaphoreUnits); 395 xSemaphoreGive(xSemaphoreUnits);
395 u8g2_SendBuffer(&u8g2);
396 } else { 396 } else {
397 ESP_LOGE(TAG, "screen_unit(%d) lock error", no); 397 ESP_LOGE(TAG, "screen_unit(%d) lock error", no);
398 } 398 }
399 } 399 }
400 400
443 u8g2_DrawStr(&u8g2, 1, 28, buf); 443 u8g2_DrawStr(&u8g2, 1, 28, buf);
444 snprintf(buf, 65, "RSSI %d", wifi_state->STA_rssi); 444 snprintf(buf, 65, "RSSI %d", wifi_state->STA_rssi);
445 u8g2_DrawStr(&u8g2, 1, 43, buf); 445 u8g2_DrawStr(&u8g2, 1, 43, buf);
446 snprintf(buf, 65, "Online %s", wifi_state->STA_online ? "Yes":"No"); 446 snprintf(buf, 65, "Online %s", wifi_state->STA_online ? "Yes":"No");
447 u8g2_DrawStr(&u8g2, 1, 59, buf); 447 u8g2_DrawStr(&u8g2, 1, 59, buf);
448 u8g2_SendBuffer(&u8g2);
448 xSemaphoreGive(xSemaphoreWiFi); 449 xSemaphoreGive(xSemaphoreWiFi);
449 u8g2_SendBuffer(&u8g2);
450 } else { 450 } else {
451 ESP_LOGE(TAG, "screen_wifi() lock error"); 451 ESP_LOGE(TAG, "screen_wifi() lock error");
452 } 452 }
453 } 453 }
454 454
466 466
467 467
468 468
469 void screen_network() 469 void screen_network()
470 { 470 {
471 screen_top("Network Status"); 471 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) {
472 menu_line(0, 1, 25, "IP %s", wifi_state->STA_ip); 472 screen_top("Network Status");
473 menu_line(0, 1, 37, "Mask %s", wifi_state->STA_nm); 473 menu_line(0, 1, 25, "IP %s", wifi_state->STA_ip);
474 menu_line(0, 1, 49, "GW %s", wifi_state->STA_gw); 474 menu_line(0, 1, 37, "Mask %s", wifi_state->STA_nm);
475 menu_line(0, 1, 61, "Name %s", config.hostname); 475 menu_line(0, 1, 49, "GW %s", wifi_state->STA_gw);
476 u8g2_SendBuffer(&u8g2); 476 menu_line(0, 1, 61, "Name %s", config.hostname);
477 u8g2_SendBuffer(&u8g2);
478 xSemaphoreGive(xSemaphoreWiFi);
479 } else {
480 ESP_LOGE(TAG, "screen_network() lock error");
481 }
477 } 482 }
478 483
479 484
480 485
481 void screen_network_setup(int sub) 486 void screen_network_setup(int sub)
514 519
515 void screen_update() 520 void screen_update()
516 { 521 {
517 screen_top("Update firmware"); 522 screen_top("Update firmware");
518 menu_line(0, 1, 43, "Push to update"); 523 menu_line(0, 1, 43, "Push to update");
524 u8g2_SendBuffer(&u8g2);
525 }
526
527
528
529 void screen_updating(char *m1, char *m2)
530 {
531 screen_top("Updating ...");
532 u8g2_SetFont(&u8g2, u8g2_font_unifont_t_symbols);
533 if (m1) {
534 u8g2_DrawUTF8(&u8g2,2,30, m1);
535 }
536 if (m2) {
537 u8g2_DrawUTF8(&u8g2,2,55, m2);
538 }
519 u8g2_SendBuffer(&u8g2); 539 u8g2_SendBuffer(&u8g2);
520 } 540 }
521 541
522 542
523 543
662 682
663 case ML2_UPDATE: 683 case ML2_UPDATE:
664 ESP_LOGI(TAG, "Loop user: Update"); 684 ESP_LOGI(TAG, "Loop user: Update");
665 screen_update(); 685 screen_update();
666 break; 686 break;
687
688 case ML2_DO_UPDATE:
689 ESP_LOGI(TAG, "Loop user: Do update");
690 break;
667 691
668 case ML2_SETUP_UNIT1: 692 case ML2_SETUP_UNIT1:
669 case ML2_SETUP_UNIT2: 693 case ML2_SETUP_UNIT2:
670 case ML2_SETUP_UNIT3: 694 case ML2_SETUP_UNIT3:
671 ESP_LOGI(TAG, "Loop user: Setup Unit %d", Main_Loop2 - ML2_SETUP_UNIT1); 695 ESP_LOGI(TAG, "Loop user: Setup Unit %d", Main_Loop2 - ML2_SETUP_UNIT1);
857 write_config(); 881 write_config();
858 New_Loop2 = ML2_MQTT; 882 New_Loop2 = ML2_MQTT;
859 } 883 }
860 break; 884 break;
861 885
886 case ML2_UPDATE:
887 New_Loop2 = ML2_DO_UPDATE;
888 break;
889
890 case ML2_DO_UPDATE:
891 bin_update();
892 New_Loop2 = ML2_UPDATE;
893 break;
894
862 default: 895 default:
863 break; 896 break;
864 } 897 }
865 } 898 }
866 899

mercurial