diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index 627fdcf2c..bf012afd5 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -294,3 +294,25 @@ String EspClass::getResetInfo(void) { struct rst_info * EspClass::getResetInfoPtr(void) { return &resetInfo; } + +bool EspClass::eraseESPconfig(void) { + bool ret = true; + size_t cfgAddr = (ESP.getFlashChipSize() - 0x3000); + size_t cfgSize = (8*1024); + + noInterrupts(); + while(cfgSize) { + + if(spi_flash_erase_sector((cfgAddr / SPI_FLASH_SEC_SIZE)) != SPI_FLASH_RESULT_OK) { + ret = false; + } + + cfgSize -= SPI_FLASH_SEC_SIZE; + cfgAddr += SPI_FLASH_SEC_SIZE; + } + interrupts(); + + return ret; +} + + diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index ccefa0c5f..9411dc5f0 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -101,6 +101,8 @@ class EspClass { String getResetInfo(void); struct rst_info * getResetInfoPtr(void); + bool eraseESPconfig(void); + inline uint32_t getCycleCount(void); }; diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp index e32f426f2..7161c399c 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp @@ -47,6 +47,10 @@ wl_status_t ESP8266WiFiMulti::run(void) { uint8 bestBSSID[6]; int32_t bestChannel; + DEBUG_WIFI_MULTI("[WIFI] delete old wifi config...\n"); + WiFi.disconnect(); + + DEBUG_WIFI_MULTI("[WIFI] start scan\n"); // WiFi.scanNetworks will return the number of networks found int8_t n = WiFi.scanNetworks();