diff -r cc7c423f03fb -r 8a3696620c0a main/task_user.c --- a/main/task_user.c Fri Nov 08 10:57:46 2019 +0100 +++ b/main/task_user.c Fri Nov 08 22:40:15 2019 +0100 @@ -33,7 +33,7 @@ extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore extern int count_pub; ///< Published MQTT messages in transit extern int Main_Loop1; ///< Main measure loop - +extern int update_running; ///< If update is running const int TASK_USER_COLD = BIT0; ///< System cold start const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep @@ -55,7 +55,7 @@ { SecsCount++; if ((SecsCount % 60) == 0) { - if (Main_Loop1 == ML1_DONE) + if (Main_Loop1 == ML1_DONE && update_running == 0) Main_Loop1 = ML1_INIT; } @@ -390,9 +390,9 @@ sprintf(buf, "%.2f bar", units[no].pressure / 1000.0); w = u8g2_GetUTF8Width(&u8g2, buf); u8g2_DrawUTF8(&u8g2, (128 - w) / 2,63, buf); + u8g2_SendBuffer(&u8g2); xSemaphoreGive(xSemaphoreUnits); - u8g2_SendBuffer(&u8g2); } else { ESP_LOGE(TAG, "screen_unit(%d) lock error", no); } @@ -445,8 +445,8 @@ u8g2_DrawStr(&u8g2, 1, 43, buf); snprintf(buf, 65, "Online %s", wifi_state->STA_online ? "Yes":"No"); u8g2_DrawStr(&u8g2, 1, 59, buf); + u8g2_SendBuffer(&u8g2); xSemaphoreGive(xSemaphoreWiFi); - u8g2_SendBuffer(&u8g2); } else { ESP_LOGE(TAG, "screen_wifi() lock error"); } @@ -468,12 +468,17 @@ void screen_network() { - screen_top("Network Status"); - menu_line(0, 1, 25, "IP %s", wifi_state->STA_ip); - menu_line(0, 1, 37, "Mask %s", wifi_state->STA_nm); - menu_line(0, 1, 49, "GW %s", wifi_state->STA_gw); - menu_line(0, 1, 61, "Name %s", config.hostname); - u8g2_SendBuffer(&u8g2); + if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { + screen_top("Network Status"); + menu_line(0, 1, 25, "IP %s", wifi_state->STA_ip); + menu_line(0, 1, 37, "Mask %s", wifi_state->STA_nm); + menu_line(0, 1, 49, "GW %s", wifi_state->STA_gw); + menu_line(0, 1, 61, "Name %s", config.hostname); + u8g2_SendBuffer(&u8g2); + xSemaphoreGive(xSemaphoreWiFi); + } else { + ESP_LOGE(TAG, "screen_network() lock error"); + } } @@ -521,6 +526,21 @@ +void screen_updating(char *m1, char *m2) +{ + screen_top("Updating ..."); + u8g2_SetFont(&u8g2, u8g2_font_unifont_t_symbols); + if (m1) { + u8g2_DrawUTF8(&u8g2,2,30, m1); + } + if (m2) { + u8g2_DrawUTF8(&u8g2,2,55, m2); + } + u8g2_SendBuffer(&u8g2); +} + + + /** * @brief Interrupt service routine for the rotary pushbutton. */ @@ -665,6 +685,10 @@ screen_update(); break; + case ML2_DO_UPDATE: + ESP_LOGI(TAG, "Loop user: Do update"); + break; + case ML2_SETUP_UNIT1: case ML2_SETUP_UNIT2: case ML2_SETUP_UNIT3: @@ -859,6 +883,15 @@ } break; + case ML2_UPDATE: + New_Loop2 = ML2_DO_UPDATE; + break; + + case ML2_DO_UPDATE: + bin_update(); + New_Loop2 = ML2_UPDATE; + break; + default: break; }