From 1e3cb0c49ef4246765bf886c832ec101fc6e7eab Mon Sep 17 00:00:00 2001 From: Petr Kracik Date: Tue, 13 Jan 2026 01:30:28 +0100 Subject: [PATCH] Network manager use SoftAP logic from project --- include/wifi_utils.h | 1 - src/LoRa_APRS_iGate.cpp | 2 +- src/network_manager.cpp | 20 +++++++++----------- src/wifi_utils.cpp | 21 --------------------- 4 files changed, 10 insertions(+), 34 deletions(-) diff --git a/include/wifi_utils.h b/include/wifi_utils.h index 9c8b17f..24a4af7 100644 --- a/include/wifi_utils.h +++ b/include/wifi_utils.h @@ -27,7 +27,6 @@ namespace WIFI_Utils { void checkWiFi(); void startAutoAP(); void startWiFi(); - void checkAutoAPTimeout(); void setup(); } diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index d4152e4..640b3ee 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -106,6 +106,7 @@ void setup() { Serial.begin(115200); networkManager = new NetworkManager(); networkManager->setup(); + networkManager->setAPTimeout(Config.wifiAutoAP.timeout * 60 * 1000); // Convert minutes to milliseconds POWER_Utils::setup(); Utils::setupDisplay(); LoRa_Utils::setup(); @@ -137,7 +138,6 @@ void loop() { Utils::checkSleepByLowBatteryVoltage(1); SLEEP_Utils::startSleeping(); } else { - WIFI_Utils::checkAutoAPTimeout(); networkManager->loop(); if (isUpdatingOTA) { diff --git a/src/network_manager.cpp b/src/network_manager.cpp index eef9357..3adc836 100644 --- a/src/network_manager.cpp +++ b/src/network_manager.cpp @@ -25,21 +25,19 @@ void NetworkManager::loop() { // WiFi methods void NetworkManager::_processAPTimeout() { - if (!_wifiAPmode || _apTimeout == 0 || !_wifiSTAmode) { + if (!_wifiAPmode || _apTimeout == 0) { + return; + } + + // If any station is connected, reset the timer + if (WiFi.softAPgetStationNum() > 0) { + _apStartup = millis(); return; } if (millis() - _apStartup > _apTimeout) { - // Time expired, switch to client mode if successfully connected - if (isWiFiConnected()) { - Serial.println("AP timeout reached. Switching to client mode only."); - disableAP(); - } - else { - // Not connected as a client, keep AP running - Serial.println("AP timeout reached but WiFi client still not connected. Keeping AP mode active."); - _apStartup = millis(); // Reset timer - } + Serial.println("AP timeout reached. Disabling AP mode."); + disableAP(); } } diff --git a/src/wifi_utils.cpp b/src/wifi_utils.cpp index 8704191..f322df9 100644 --- a/src/wifi_utils.cpp +++ b/src/wifi_utils.cpp @@ -33,7 +33,6 @@ extern int myWiFiAPSize; extern WiFi_AP *currentWiFi; extern bool backUpDigiMode; -uint32_t WiFiAutoAPTime = millis(); uint32_t previousWiFiMillis = 0; uint8_t wifiCounter = 0; uint32_t lastBackupDigiTime = millis(); @@ -76,9 +75,7 @@ namespace WIFI_Utils { void startAutoAP() { displayShow("", " Starting Auto AP", " Please connect to it " , " loading ...", 1000); - networkManager->setupAP(Config.callsign + "-AP", Config.wifiAutoAP.password); - WiFiAutoAPTime = millis(); } void startWiFi() { @@ -121,24 +118,6 @@ namespace WIFI_Utils { } } - void checkAutoAPTimeout() { - if (networkManager->isWifiAPActive() && Config.wifiAutoAP.timeout > 0) { - if (WiFi.softAPgetStationNum() > 0) { - WiFiAutoAPTime = 0; - } else { - if (WiFiAutoAPTime == 0) { - WiFiAutoAPTime = millis(); - } else if ((millis() - WiFiAutoAPTime) > Config.wifiAutoAP.timeout * 60 * 1000) { - Serial.println("Stopping auto AP"); - - networkManager->disableAP(); - - Serial.println("Auto AP stopped (timeout)"); - } - } - } - } - void setup() { if (Config.digi.ecoMode == 0) startWiFi(); btStop();