diff --git a/src/main.cpp b/src/main.cpp index b3f1576..ce27c5a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,50 +1,6 @@ #include -#include -#include #include "simpleota.h" -#define OTA_WIFI_SSID "Chaos-West temp alternative" -#define OTA_WIFI_PASSWORD "" -#define OTA_WAIT_TIMEOUT 1000 // in 0.1s increments -> 10s - -void normal_setup(); -void checkOTA(); -bool initOTA(); - -enum OTA_MODE { - NONE, - SEARCHING, - WAITING, - UPDATING -} otaMode; - -uint16_t otaWaitCounter; - -void checkOTA() { - otaMode = SEARCHING; - Serial.println("looking for OTA WiFi..."); - - // WARNING: to allow ESP-NOW work, this WiFi must be on Channel 1 - if (OTA_WIFI_PASSWORD!="") { - WiFi.begin(OTA_WIFI_SSID, OTA_WIFI_PASSWORD); //wifi with password - }else{ - WiFi.begin(OTA_WIFI_SSID); //open wifi - } - - while (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("no OTA WiFi found, proceed normal boot"); - otaMode = NONE; - WiFi.disconnect(); - return; - } - - otaMode = WAITING; -} - -void normal_setup() { - - -} void setup() { Serial.begin(115200); @@ -60,78 +16,9 @@ void setup() { } -bool initOTA() { - if (otaMode == WAITING) { - Serial.println("connected to OTA WiFi. Waiting for firmware..."); - Serial.print("IP address: "); - Serial.println(WiFi.localIP()); - - ArduinoOTA - .onStart([]() { - otaMode = UPDATING; - String type; - if (ArduinoOTA.getCommand() == U_FLASH) - type = "sketch"; - else // U_SPIFFS - type = "filesystem"; - - // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() - Serial.println("Start updating " + type); - }) - .onEnd([]() { - Serial.println("\nEnd"); - }) - .onProgress([](unsigned int progress, unsigned int total) { - int prog = (progress / (total / 100)); - Serial.printf("Progress: %u%%\r", prog); - - }) - .onError([](ota_error_t error) { - Serial.printf("Error[%u]: ", error); - if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); - else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); - else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); - else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); - else if (error == OTA_END_ERROR) Serial.println("End Failed"); - }); - - ArduinoOTA.begin(); - return 1; //ota ok - }else{ - return 0; //not using ota - } -} - - -bool ota_loop() { - if (otaMode != NONE) { - ArduinoOTA.handle(); - - if(otaMode == WAITING) { - static long mil = millis(); - static boolean huehott = false; - - if(millis() - mil > 100) { - huehott = !huehott; - mil = millis(); - - otaWaitCounter++; - if(otaWaitCounter >= OTA_WAIT_TIMEOUT) { - Serial.println("OTA wait timeout, proceeding normal boot"); - otaMode = NONE; - normal_setup(); - } - } - } - return true; - - } else { - return false; - } -} void loop() { - if (ota_loop()) { + if (loopOTA()) { return; //just wait for ota } diff --git a/src/simpleota.cpp b/src/simpleota.cpp index 56a9e24..47580fd 100644 --- a/src/simpleota.cpp +++ b/src/simpleota.cpp @@ -1 +1,98 @@ -#include "simpleota.h" \ No newline at end of file +#include "simpleota.h" + + +uint16_t otaWaitCounter; + + +OTA_MODE otaMode; + +void checkOTA() { + otaMode = SEARCHING; + Serial.println("looking for OTA WiFi..."); + + // WARNING: to allow ESP-NOW work, this WiFi must be on Channel 1 + if (OTA_WIFI_PASSWORD!="") { + WiFi.begin(OTA_WIFI_SSID, OTA_WIFI_PASSWORD); //wifi with password + }else{ + WiFi.begin(OTA_WIFI_SSID); //open wifi + } + + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("no OTA WiFi found, proceed normal boot"); + otaMode = NONE; + WiFi.disconnect(); + return; + } + + otaMode = WAITING; +} + + +bool initOTA() { + if (otaMode == WAITING) { + Serial.println("connected to OTA WiFi. Waiting for firmware..."); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + ArduinoOTA + .onStart([]() { + otaMode = UPDATING; + String type; + if (ArduinoOTA.getCommand() == U_FLASH) + type = "sketch"; + else // U_SPIFFS + type = "filesystem"; + + // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() + Serial.println("Start updating " + type); + }) + .onEnd([]() { + Serial.println("\nEnd"); + }) + .onProgress([](unsigned int progress, unsigned int total) { + int prog = (progress / (total / 100)); + Serial.printf("Progress: %u%%\r", prog); + + }) + .onError([](ota_error_t error) { + Serial.printf("Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); + else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); + else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); + else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); + else if (error == OTA_END_ERROR) Serial.println("End Failed"); + }); + + ArduinoOTA.begin(); + return 1; //ota ok + }else{ + return 0; //not using ota + } +} + + +bool loopOTA() { + if (otaMode != NONE) { + ArduinoOTA.handle(); + + if(otaMode == WAITING) { + static long mil = millis(); + static boolean huehott = false; + + if(millis() - mil > 100) { + huehott = !huehott; + mil = millis(); + + otaWaitCounter++; + if(otaWaitCounter >= OTA_WAIT_TIMEOUT) { + Serial.println("OTA wait timeout, proceeding normal boot"); + otaMode = NONE; + } + } + } + return true; + + } else { + return false; + } +} \ No newline at end of file diff --git a/src/simpleota.h b/src/simpleota.h index a67b110..da00043 100644 --- a/src/simpleota.h +++ b/src/simpleota.h @@ -1,4 +1,28 @@ #ifndef simpleota_h #define simpleota_h +#include +#include +#include + + +#define OTA_WIFI_SSID "Chaos-West temp alternative" +#define OTA_WIFI_PASSWORD "" +#define OTA_WAIT_TIMEOUT 1000 // in 0.1s increments -> 10s + +void checkOTA(); +bool initOTA(); +bool loopOTA(); + +enum OTA_MODE { + NONE, + SEARCHING, + WAITING, + UPDATING +}; + +extern OTA_MODE otaMode; + +extern uint16_t otaWaitCounter; + #endif \ No newline at end of file