From 4b0d5a4ca08f6cc311efb3b0be050cb60abee9c8 Mon Sep 17 00:00:00 2001 From: Petr Kracik Date: Thu, 15 Jan 2026 01:43:40 +0100 Subject: [PATCH] Wifi utils add multiple SSID --- src/LoRa_APRS_iGate.cpp | 4 ---- src/wifi_utils.cpp | 33 ++++++++++++++++----------------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 0f93180..71ecb3b 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -82,10 +82,6 @@ WiFiClient mqttClient; NetworkManager *networkManager; -uint8_t myWiFiAPIndex = 0; -int myWiFiAPSize = Config.wifiAPs.size(); -WiFi_AP *currentWiFi = &Config.wifiAPs[myWiFiAPIndex]; - bool isUpdatingOTA = false; uint32_t lastBatteryCheck = 0; diff --git a/src/wifi_utils.cpp b/src/wifi_utils.cpp index 93ec289..5f958fb 100644 --- a/src/wifi_utils.cpp +++ b/src/wifi_utils.cpp @@ -28,9 +28,6 @@ extern Configuration Config; extern NetworkManager *networkManager; -extern uint8_t myWiFiAPIndex; -extern int myWiFiAPSize; -extern WiFi_AP *currentWiFi; extern bool backUpDigiMode; uint32_t previousWiFiMillis = 0; @@ -79,25 +76,27 @@ namespace WIFI_Utils { } void startWiFi() { - if (currentWiFi->ssid.isEmpty()) { + bool hasNetworks = false; + + networkManager->clearWiFiNetworks(); + for (size_t i = 0; i < Config.wifiAPs.size(); i++) { + const WiFi_AP& wifiAP = Config.wifiAPs[i]; + if (wifiAP.ssid.isEmpty()) { + continue; + } + + hasNetworks = true; + networkManager->addWiFiNetwork(wifiAP.ssid, wifiAP.password); + } + + if (!hasNetworks) { Serial.println("WiFi SSID not set! Starting Auto AP"); startAutoAP(); return; } - // TODO: Create generic multi-SSID support in Network Manager - while (!networkManager->isWiFiConnected()) { - displayShow("", "Connecting to WiFi:", "", currentWiFi->ssid + " ...", 0); - networkManager->disconnectWiFi(); - networkManager->connectWiFi(currentWiFi->ssid, currentWiFi->password); - - if(myWiFiAPIndex >= (myWiFiAPSize - 1)) { - break; - } - - myWiFiAPIndex++; - currentWiFi = &Config.wifiAPs[myWiFiAPIndex]; - } + displayShow("", "Connecting to WiFi:", "", " loading ...", 0); + networkManager->connectWiFi(); #ifdef INTERNAL_LED_PIN digitalWrite(INTERNAL_LED_PIN,LOW);