From ab534ce60af48014d350e196e7b0a66efc72175d Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Thu, 18 Nov 2021 19:43:48 +0100 Subject: [PATCH] Ignore firmware update if AP button is pressed --- src/AmsToMqttBridge.ino | 68 ++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino index 64add8f5..ae1b7fdc 100644 --- a/src/AmsToMqttBridge.ino +++ b/src/AmsToMqttBridge.ino @@ -214,42 +214,46 @@ void setup() { if(hasFs) { bool flashed = false; if(LittleFS.exists(FILE_FIRMWARE)) { - if(Debug.isActive(RemoteDebug::INFO)) debugI("Found firmware"); -#if defined(ESP8266) - WiFi.setSleepMode(WIFI_LIGHT_SLEEP); - WiFi.forceSleepBegin(); -#endif - int i = 0; - while(hw.getVcc() > 1.0 && hw.getVcc() < 3.2 && i < 3) { - if(Debug.isActive(RemoteDebug::INFO)) debugI(" vcc not optimal, light sleep 10s"); -#if defined(ESP8266) - delay(10000); -#elif defined(ESP32) - esp_sleep_enable_timer_wakeup(10000000); - esp_light_sleep_start(); -#endif - i++; - } + if (digitalRead(gpioConfig.apPin) == HIGH) { + if(Debug.isActive(RemoteDebug::INFO)) debugI("Found firmware"); + #if defined(ESP8266) + WiFi.setSleepMode(WIFI_LIGHT_SLEEP); + WiFi.forceSleepBegin(); + #endif + int i = 0; + while(hw.getVcc() > 1.0 && hw.getVcc() < 3.2 && i < 3) { + if(Debug.isActive(RemoteDebug::INFO)) debugI(" vcc not optimal, light sleep 10s"); + #if defined(ESP8266) + delay(10000); + #elif defined(ESP32) + esp_sleep_enable_timer_wakeup(10000000); + esp_light_sleep_start(); + #endif + i++; + } - debugI(" flashing"); - File firmwareFile = LittleFS.open(FILE_FIRMWARE, "r"); - debugD(" firmware size: %d", firmwareFile.size()); - uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; - debugD(" available: %d", maxSketchSpace); - if (!Update.begin(maxSketchSpace, U_FLASH)) { - if(Debug.isActive(RemoteDebug::ERROR)) { - debugE("Unable to start firmware update"); - Update.printError(Serial); + debugI(" flashing"); + File firmwareFile = LittleFS.open(FILE_FIRMWARE, "r"); + debugD(" firmware size: %d", firmwareFile.size()); + uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; + debugD(" available: %d", maxSketchSpace); + if (!Update.begin(maxSketchSpace, U_FLASH)) { + if(Debug.isActive(RemoteDebug::ERROR)) { + debugE("Unable to start firmware update"); + Update.printError(Serial); + } + } else { + while (firmwareFile.available()) { + uint8_t ibuffer[128]; + firmwareFile.read((uint8_t *)ibuffer, 128); + Update.write(ibuffer, sizeof(ibuffer)); + } + flashed = Update.end(true); } + firmwareFile.close(); } else { - while (firmwareFile.available()) { - uint8_t ibuffer[128]; - firmwareFile.read((uint8_t *)ibuffer, 128); - Update.write(ibuffer, sizeof(ibuffer)); - } - flashed = Update.end(true); + debugW("AP button pressed, skipping firmware update and deleting firmware file."); } - firmwareFile.close(); LittleFS.remove(FILE_FIRMWARE); } LittleFS.end();