0

I have NodeMCU ESP32s and I am using Arduino framework.

I want the ESP to connect to local Wifi, so I set AP on ESP and send to it UDP packet with WIFI credentials. I am doing it in a loop until sent credentials are correct so the board connects to local WIFI. Here is a diagram with logic flow for visualization. enter image description here

For full code reference GitHub link: https://github.com/bartex-bartex/AirQualitySensor-esp32-arduino

WifiManger class:

#ifndef WifiManager_H
#define WifiManager_H
#include "ConfigManager.h"
class WifiManager {
private:
 ConfigManager& configManager = ConfigManager::getInstance();
 const char* ap_ssid = "ESP32-AP";
 const char* ap_pass = "12345678";
 void getWiFiCredentials();
public:
 WifiManager();
 bool connectToWiFi(char* ssid, char* pass);
 bool connectToWiFi(ConfigManager& configManager, int maxUniqueCredentials);
};
#endif // WifiManager_H

connectToWiFi:

bool WifiManager::connectToWiFi(ConfigManager& configManager, int maxUniqueCredentials) {
 bool success = false;
 char ssid[32] = {0};
 char pass[32] = {0};
 configManager.load();
 while (!configManager.isDeviceConfigured()) {
 getWiFiCredentials();
 } 
 do{
 configManager.getSSID(ssid);
 configManager.getPassword(pass);
 ESP_LOGI("CREDENTIALS", "SSID: %s", ssid);
 ESP_LOGI("CREDENTIALS", "Password: %s", pass);
 success = connectToWiFi(ssid, pass);
 if (!success){
 getWiFiCredentials();
 }
 } while(!success && maxUniqueCredentials--);
 return success;
}

connectToWiFi:

bool WifiManager::connectToWiFi(char* ssid, char* pass) {
 bool success = false;
 ESP_LOGI("WIFI", "Connecting to WiFi with SSID: %s", ssid);
 Serial.printf("Connecting to: %s\n", ssid);
 WiFi.disconnect(); // clears config, so it won't try to reconnect
 WiFi.mode(WIFI_STA); // this stops AP - THAT IS TESTED!
 WiFi.begin(ssid, pass);
 
 // try to connect to WiFi using saved credentials
 int time = 5;
 while (time--){
 if (WiFi.status() == WL_CONNECTED){
 success = true;
 ESP_LOGI("WIFI", "Successfully connected to SSID: %s", ssid);
 break;
 }
 delay(1000);
 ESP_LOGD("WIFI", "Attempt %d, still trying to connect...", 5 - time);
 }
 if (success){
 ESP_LOGI("WIFI", "Connected to WiFi SSID: %s", ssid);
 } else {
 ESP_LOGE("WIFI", "Failed to connect to WiFi SSID: %s", ssid);
 WiFi.disconnect(); // clears config, so it won't try to reconnect
 }
 return success;
}

getWiFiCredentials:

void WifiManager::getWiFiCredentials() {
 ESP_LOGI("WIFI", "Resetting WiFi configuration");
 
 configManager.reset();
 ESP_LOGI("WIFI", "Initializing Access Point (AP)");
 // create own network
 IPAddress local_IP(192, 168, 1, 1);
 IPAddress gateway(192, 168, 1, 1);
 IPAddress subnet(255, 255, 255, 0);
 
 WiFi.mode(WIFI_AP);
 WiFi.softAPConfig(local_IP, gateway, subnet);
 WiFi.softAP(ap_ssid, ap_pass);
 ESP_LOGI("WIFI", "Access Point created with SSID: %s", ap_ssid);
 // obtain and save data
 UDPMessengerService udpMessengerService = UDPMessengerService(1234);
 ESP_LOGI("WIFI", "Waiting for UDP packet containing WiFi credentials");
 UdpPacket packet;
 while (!configManager.isDeviceConfigured()) {
 // TODO: Sometimes without sending UDP packet the code moves on...
 if (udpMessengerService.readPacket(packet)){
 ESP_LOGI("WIFI", "Received UDP packet with content: %s", packet.content);
 // writes response message in packet.content
 CommandProcessor::processMessage(packet.content);
 udpMessengerService.sendPacket(packet);
 }
 }
 ESP_LOGI("WIFI", "WiFi credentials received and saved.");
 // false -> AP is turn off and immediatelly on (probably clear config or so)
 // true -> AP switches state 3 times: START STOP START / STOP START STOP -> if second then occure error after first STOP 
 WiFi.softAPdisconnect(); 
 ESP_LOGI("WIFI", "Access Point disabled.");
}

Problems:

1) when I invoke getWiFiCredentials for the second time and execution reaches function end I receive bad head error and system reboots

I guess there is some memory corruption, but I really couldn't spot it in my code.

...
CORRUPT HEAP: Bad head at 0x3ffbad94. Expected 0xabba1234 got 0x0412c61c
assert failed: multi_heap_free multi_heap_poisoning.c:259 (head != NULL)

2) How to handle properly AP turning off + should I use WiFi.mode(WIFI_AP) or WiFi.mode(WIFI_STA).

I don't get much from docs: https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/api/wifi.html#softapdisconnect

I have found that WiFi.softAPdisconnect() did some kind of config clear, but doesn't stop the AP, rather RESTART it.

...
[ 8693][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved. 
[ 8715][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 8726][I][WifiManager.cpp:124] getWiFiCredentials(): [WIFI] Access Point disabled.
[ 8727][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 8741][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
...

However WiFi.mode(WIFI_STA) do stop AP.

WiFi.softAPdisconnect(true) should stop AP, but I received an error

...
[ 4212][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved.
[ 4234][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 4246][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
E (8622) wifi_init_default: netstack cb reg failed with 12308
[ 4259][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 4266][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 4298][I][WifiManager.cpp:124] getWiFiCredentials(): [WIFI] Access Point disabled.
...

Full logs: With: WiFi.softAPdisconnect(true)

[ 78][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[ 215][I][ConfigManager.cpp:29] load(): [CONFIG] Loading config
[ 231][E][ConfigManager.cpp:57] load(): [CONFIG] Config file is empty
[ 238][I][WifiManager.cpp:82] getWiFiCredentials(): [WIFI] Resetting WiFi configuration
[ 261][I][WifiManager.cpp:86] getWiFiCredentials(): [WIFI] Initializing Access Point (AP)
[ 291][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 0 - WIFI_READY
[ 372][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 382][I][WifiManager.cpp:97] getWiFiCredentials(): [WIFI] Access Point created with SSID: ESP32-AP 
[ 392][I][WifiManager.cpp:102] getWiFiCredentials(): [WIFI] Waiting for UDP packet containing WiFi credentials
[ 2657][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 2676][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 4118][I][WifiManager.cpp:109] getWiFiCredentials(): [WIFI] Received UDP packet with content: { "cmd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 4133][I][CommandProcessor.cpp:20] processMessage(): [UDP] Processing incoming UDP content
[ 4142][I][CommandProcessor.cpp:32] processMessage(): [UDP] Received command: setWiFi
[ 4150][I][CommandProcessor.cpp:58] saveWifiCredentials(): [WIFI] Setting WiFi credentials: SSID: Dom | pass: password
[ 4170][I][CommandProcessor.cpp:41] processMessage(): [UDP] WiFi credentials saved successfully.
[ 4179][I][UDPMessengerService.cpp:31] sendPacket(): [UDP] Sending UDP packet to IP: 192.168.1.2, Port: 60766
[ 4189][D][UDPMessengerService.cpp:32] sendPacket(): [UDP] Packet content: {"tymd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 4204][I][UDPMessengerService.cpp:38] sendPacket(): [UDP] Packet sent successfully.
[ 4212][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved.
[ 4234][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 4246][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
E (8622) wifi_init_default: netstack cb reg failed with 12308
[ 4259][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 4266][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 4298][I][WifiManager.cpp:124] getWiFiCredentials(): [WIFI] Access Point disabled.
[ 4306][I][WifiManager.cpp:65] connectToWiFi(): [CREDENTIALS] SSID: Dom
[ 4312][I][WifiManager.cpp:66] connectToWiFi(): [CREDENTIALS] Password: password
[ 4320][I][WifiManager.cpp:17] connectToWiFi(): [WIFI] Connecting to WiFi with SSID: Dom
Connecting to: Dom
[ 4347][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 0 - WIFI_READY
[ 4362][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 2 - STA_START
[ 5379][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 1, still trying to connect...
[ 6388][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 2, still trying to connect...
[ 6791][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 6799][W][WiFiGeneric.cpp:1062] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 6806][D][WiFiGeneric.cpp:1082] _eventCallback(): WiFi Reconnect Running
[ 7397][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 3, still trying to connect...
[ 8406][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 4, still trying to connect...
[ 9235][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 9242][W][WiFiGeneric.cpp:1062] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 9249][D][WiFiGeneric.cpp:1086] _eventCallback(): WiFi AutoReconnect Running
[ 9415][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 5, still trying to connect...
[ 9423][E][WifiManager.cpp:42] connectToWiFi(): [WIFI] Failed to connect to WiFi SSID: Dom
[ 9432][I][WifiManager.cpp:82] getWiFiCredentials(): [WIFI] Resetting WiFi configuration
[ 9449][I][WifiManager.cpp:86] getWiFiCredentials(): [WIFI] Initializing Access Point (AP)
[ 9461][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 3 - STA_STOP
[ 9469][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 9489][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 9661][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 9661][I][WifiManager.cpp:97] getWiFiCredentials(): [WIFI] Access Point created with SSID: ESP32-AP 
[ 9679][I][WifiManager.cpp:102] getWiFiCredentials(): [WIFI] Waiting for UDP packet containing WiFi credentials
[ 21588][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 21612][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 23077][I][WifiManager.cpp:109] getWiFiCredentials(): [WIFI] Received UDP packet with content: { "cmd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 23092][I][CommandProcessor.cpp:20] processMessage(): [UDP] Processing incoming UDP content
[ 23100][I][CommandProcessor.cpp:32] processMessage(): [UDP] Received command: setWiFi
[ 23108][I][CommandProcessor.cpp:58] saveWifiCredentials(): [WIFI] Setting WiFi credentials: SSID: Dom | pass: password
[ 23128][I][CommandProcessor.cpp:41] processMessage(): [UDP] WiFi credentials saved successfully.
[ 23137][I][UDPMessengerService.cpp:31] sendPacket(): [UDP] Sending UDP packet to IP: 192.168.1.2, Port: 60766
[ 23147][D][UDPMessengerService.cpp:32] sendPacket(): [UDP] Packet content: {"tymd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 23162][I][UDPMessengerService.cpp:38] sendPacket(): [UDP] Packet sent successfully.
[ 23170][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved.
[ 23192][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 23256][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
CORRUPT HEAP: Bad head at 0x3ffbada4. Expected 0xabba1234 got 0xabba1200
assert failed: multi_heap_free multi_heap_poisoning.c:259 (head != NULL)
Backtrace: 0x4008368d:0x3ffbbd80 0x4008be49:0x3ffbbda0 0x40091325:0x3ffbbdc0 0x40090f21:0x3ffbbef0 0x40083bfd:0x3ffbbf10 0x40091355:0x3ffbbf30 0x401029d9:0x3ffbbf50

With: WiFi.softAPdisconnect()

[ 78][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[ 215][I][ConfigManager.cpp:29] load(): [CONFIG] Loading config
[ 231][E][ConfigManager.cpp:57] load(): [CONFIG] Config file is empty
[ 238][I][WifiManager.cpp:82] getWiFiCredentials(): [WIFI] Resetting WiFi configuration
[ 261][I][WifiManager.cpp:86] getWiFiCredentials(): [WIFI] Initializing Access Point (AP)
[ 292][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 0 - WIFI_READY
[ 370][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 392][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 564][I][WifiManager.cpp:97] getWiFiCredentials(): [WIFI] Access Point created with SSID: ESP32-AP
[ 565][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 582][I][WifiManager.cpp:102] getWiFiCredentials(): [WIFI] Waiting for UDP packet containing WiFi credentials
[ 7000][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 7015][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 8600][I][WifiManager.cpp:109] getWiFiCredentials(): [WIFI] Received UDP packet with content: { "cmd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 8614][I][CommandProcessor.cpp:20] processMessage(): [UDP] Processing incoming UDP content
[ 8623][I][CommandProcessor.cpp:32] processMessage(): [UDP] Received command: setWiFi
[ 8631][I][CommandProcessor.cpp:58] saveWifiCredentials(): [WIFI] Setting WiFi credentials: SSID: Dom | pass: password
[ 8651][I][CommandProcessor.cpp:41] processMessage(): [UDP] WiFi credentials saved successfully.
[ 8660][I][UDPMessengerService.cpp:31] sendPacket(): [UDP] Sending UDP packet to IP: 192.168.1.2, Port: 60766
[ 8670][D][UDPMessengerService.cpp:32] sendPacket(): [UDP] Packet content: {"tymd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 8685][I][UDPMessengerService.cpp:38] sendPacket(): [UDP] Packet sent successfully.
[ 8693][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved. 
[ 8715][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 8726][I][WifiManager.cpp:124] getWiFiCredentials(): [WIFI] Access Point disabled.
[ 8727][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 8741][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 8749][I][WifiManager.cpp:65] connectToWiFi(): [CREDENTIALS] SSID: Dom
[ 8755][I][WifiManager.cpp:66] connectToWiFi(): [CREDENTIALS] Password: password
[ 8763][I][WifiManager.cpp:17] connectToWiFi(): [WIFI] Connecting to WiFi with SSID: Dom
Connecting to: Dom
[ 8774][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 8781][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 2 - STA_START
[ 9799][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 1, still trying to connect...
[ 10808][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 2, still trying to connect...
[ 11212][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 11220][W][WiFiGeneric.cpp:1062] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 11227][D][WiFiGeneric.cpp:1082] _eventCallback(): WiFi Reconnect Running
[ 11817][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 3, still trying to connect...
[ 12826][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 4, still trying to connect...
[ 13656][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[ 13663][W][WiFiGeneric.cpp:1062] _eventCallback(): Reason: 201 - NO_AP_FOUND
[ 13670][D][WiFiGeneric.cpp:1086] _eventCallback(): WiFi AutoReconnect Running
[ 13835][D][WifiManager.cpp:36] connectToWiFi(): [WIFI] Attempt 5, still trying to connect...
[ 13843][E][WifiManager.cpp:42] connectToWiFi(): [WIFI] Failed to connect to WiFi SSID: Dom
[ 13852][I][WifiManager.cpp:82] getWiFiCredentials(): [WIFI] Resetting WiFi configuration
[ 13869][I][WifiManager.cpp:86] getWiFiCredentials(): [WIFI] Initializing Access Point (AP)
[ 13880][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 3 - STA_STOP
[ 13942][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 13955][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 14134][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 14133][I][WifiManager.cpp:97] getWiFiCredentials(): [WIFI] Access Point created with SSID: ESP32-AP 
[ 14151][I][WifiManager.cpp:102] getWiFiCredentials(): [WIFI] Waiting for UDP packet containing WiFi credentials
[ 20809][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 12 - AP_STACONNECTED
[ 20828][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 14 - AP_STAIPASSIGNED
[ 25837][I][WifiManager.cpp:109] getWiFiCredentials(): [WIFI] Received UDP packet with content: { "cmd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 25851][I][CommandProcessor.cpp:20] processMessage(): [UDP] Processing incoming UDP content
[ 25860][I][CommandProcessor.cpp:32] processMessage(): [UDP] Received command: setWiFi
[ 25868][I][CommandProcessor.cpp:58] saveWifiCredentials(): [WIFI] Setting WiFi credentials: SSID: Dom | pass: password
[ 25887][I][CommandProcessor.cpp:41] processMessage(): [UDP] WiFi credentials saved successfully.
[ 25896][I][UDPMessengerService.cpp:31] sendPacket(): [UDP] Sending UDP packet to IP: 192.168.1.2, Port: 60766
[ 25906][D][UDPMessengerService.cpp:32] sendPacket(): [UDP] Packet content: {"tymd": "setWiFi", "params": {"ssid": "Dom", "password":"password"}}
[ 25921][I][UDPMessengerService.cpp:38] sendPacket(): [UDP] Packet sent successfully.
[ 25929][I][WifiManager.cpp:118] getWiFiCredentials(): [WIFI] WiFi credentials received and saved.
[ 25951][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 25962][I][WifiManager.cpp:124] getWiFiCredentials(): [WIFI] Access Point disabled.
[ 25963][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
[ 25977][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
CORRUPT HEAP: Bad head at 0x3ffbad94. Expected 0xabba1234 got 0x0412c61c
assert failed: multi_heap_free multi_heap_poisoning.c:259 (head != NULL)
Backtrace: 0x4008368d:0x3ffb1cc0 0x4008be49:0x3ffb1ce0 0x40091325:0x3ffb1d00 0x40090f21:0x3ffb1e30 0x40083bfd:0x3ffb1e50 0x40091355:0x3ffb1e70 0x40145345:0x3ffb1e90 0x401451f9:0x3ffb1eb0 0x400d47fc:0x3ffb1ed0 0x400d5ac7:0x3ffb1ef0 0x400d5bd1:0x3ffb21c0 0x400d5c35:0x3ffb2250 0x400db3ae:0x3ffb2290
asked Oct 24, 2024 at 13:16

1 Answer 1

0

I think I have solved those problems:

Problem #1:
The line UDPMessengerService udpMessengerService = UDPMessengerService(1234) was causing heap corruption when the object was created multiple times. To resolve this, I moved the object creation to the connectToWiFi function and passed it by reference, which eliminates the issue.

Problem #2:
Although WiFi.softAPdisconnect(true) throws an error, it appears to successfully stop the AP eventually, so I consider this behavior acceptable.

[ 4234][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 13 - AP_STADISCONNECTED
[ 4246][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
E (8622) wifi_init_default: netstack cb reg failed with 12308
[ 4259][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 10 - AP_START
[ 4266][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 11 - AP_STOP
answered Oct 24, 2024 at 14:19

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.