#ifdef ESP_PLATFORM #include "ESP32Board.h" #if defined(ADMIN_PASSWORD) && !defined(DISABLE_WIFI_OTA) // Repeater or Room Server only #include #include #include #include #include bool ESP32Board::startOTAUpdate(const char* id, char reply[]) { inhibit_sleep = true; // prevent sleep during OTA if (WiFi.status() != WL_CONNECTED) { WiFi.mode(WIFI_AP_STA); if (!WiFi.softAP("MeshCore-OTA", NULL)) { strcpy(reply, "Error - OTA AP start failed"); return false; } sprintf(reply, "Started: http://%s/update (AP: MeshCore-OTA)", WiFi.softAPIP().toString().c_str()); } else { sprintf(reply, "Started: http://%s/update (WiFi: %s)", WiFi.localIP().toString().c_str(), WiFi.SSID().c_str()); } MESH_DEBUG_PRINTLN("startOTAUpdate: %s", reply); static char id_buf[60]; sprintf(id_buf, "%s (%s)", id, getManufacturerName()); static char home_buf[90]; sprintf(home_buf, "

Hi! I am a MeshCore Repeater. ID: %s

", id); static AsyncWebServer* server = nullptr; if (server != nullptr) { delete server; server = nullptr; } server = new AsyncWebServer(80); server->on("/", HTTP_GET, [](AsyncWebServerRequest *request) { request->send(200, "text/html", home_buf); }); server->on("/log", HTTP_GET, [](AsyncWebServerRequest *request) { request->send(SPIFFS, "/packet_log", "text/plain"); }); AsyncElegantOTA.setID(id_buf); AsyncElegantOTA.begin(server); // Start ElegantOTA server->begin(); return true; } #else bool ESP32Board::startOTAUpdate(const char* id, char reply[]) { return false; // not supported } #endif #endif