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); |