Network manager use SoftAP logic from project

This commit is contained in:
Petr Kracik 2026-01-13 01:30:28 +01:00
parent 32de70ad8c
commit 1e3cb0c49e
4 changed files with 10 additions and 34 deletions

View file

@ -27,7 +27,6 @@ namespace WIFI_Utils {
void checkWiFi();
void startAutoAP();
void startWiFi();
void checkAutoAPTimeout();
void setup();
}

View file

@ -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) {

View file

@ -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();
}
}

View file

@ -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();