Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Add eraseCredentials option to WiFi disconnect method. #8758

Merged
merged 9 commits into from
Dec 15, 2022
Merged
25 changes: 21 additions & 4 deletions libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -353,15 +353,32 @@ bool ESP8266WiFiSTAClass::reconnect() {
}

/**
* Disconnect from the network
* @param wifioff
* Disconnect from the network with clearing saved credentials
* @param wifioff Bool indicating whether STA should be disabled.
* @return one value of wl_status_t enum
*/
bool ESP8266WiFiSTAClass::disconnect(bool wifioff) {
// Disconnect with clearing saved credentials.
return disconnect(wifioff, true);
}
cziter15 marked this conversation as resolved.
Show resolved Hide resolved

/**
* Disconnect from the network
* @param wifioff Bool indicating whether STA should be disabled.
* @param eraseCredentials Bool indicating whether saved credentials should be erased.
* @return one value of wl_status_t enum
*/
bool ESP8266WiFiSTAClass::disconnect(bool wifioff, bool eraseCredentials) {
bool ret = false;

// Read current config.
struct station_config conf;
*conf.ssid = 0;
*conf.password = 0;
wifi_station_get_config(&conf);

if (eraseCredentials) {
memset(&conf.ssid, 0, sizeof(conf.ssid));
memset(&conf.password, 0, sizeof(conf.password));
}

// API Reference: wifi_station_disconnect() need to be called after system initializes and the ESP8266 Station mode is enabled.
if (WiFi.getMode() & WIFI_STA)
Expand Down
2 changes: 2 additions & 0 deletions libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ class ESP8266WiFiSTAClass: public LwipIntf {
bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);

bool reconnect();

bool disconnect(bool wifioff = false);
bool disconnect(bool wifioff, bool eraseCredentials);

bool isConnected();

Expand Down