-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
WIFI_RESUME improve speed and example (#7877)
Improve resume speed by passing in last known BSSID Provide a simpler example for WIFI_SHUTDOWN/WIFI_RESUME Add documentation for WIFI_SHUTDOWN and WIFI_RESUME.
- Loading branch information
Showing
5 changed files
with
122 additions
and
270 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
libraries/ESP8266WiFi/examples/WiFiShutdown/WiFiShutdown.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
|
||
// Demonstrate the use of WiFi.mode(WIFI_SHUTDOWN)/WiFi.mode(WIFI_RESUME) | ||
// Released to public domain | ||
|
||
// Current on WEMOS D1 mini (including: LDO, usbserial chip): | ||
// ~85mA during normal operations | ||
// ~30mA during wifi shutdown | ||
// ~5mA during deepsleep | ||
|
||
#ifndef STASSID | ||
#define STASSID "mynetwork" | ||
#define STAPSK "mynetworkpasswd" | ||
#endif | ||
|
||
#ifndef RTC_USER_DATA_SLOT_WIFI_STATE | ||
#define RTC_USER_DATA_SLOT_WIFI_STATE 33u | ||
#endif | ||
|
||
#include <ESP8266WiFi.h> | ||
#include <include/WiFiState.h> // WiFiState structure details | ||
|
||
WiFiState state; | ||
|
||
const char* ssid = STASSID; | ||
const char* password = STAPSK; | ||
|
||
void preinit(void) { | ||
// Make sure, wifi stays off after boot. | ||
ESP8266WiFiClass::preinitWiFiOff(); | ||
} | ||
|
||
void setup() { | ||
Serial.begin(74880); | ||
//Serial.setDebugOutput(true); // If you need debug output | ||
Serial.println("Trying to resume WiFi connection..."); | ||
|
||
// May be necessary after deepSleep. Otherwise you may get "error: pll_cal exceeds 2ms!!!" when trying to connect | ||
delay(1); | ||
|
||
// --- | ||
// Here you can do whatever you need to do that doesn't need a WiFi connection. | ||
// --- | ||
|
||
ESP.rtcUserMemoryRead(RTC_USER_DATA_SLOT_WIFI_STATE, reinterpret_cast<uint32_t *>(&state), sizeof(state)); | ||
unsigned long start = millis(); | ||
|
||
if (!WiFi.mode(WIFI_RESUME, &state) | ||
|| (WiFi.waitForConnectResult(10000) != WL_CONNECTED)) { | ||
Serial.println("Cannot resume WiFi connection, connecting via begin..."); | ||
WiFi.persistent(false); | ||
|
||
if (!WiFi.mode(WIFI_STA) | ||
|| !WiFi.begin(ssid, password) | ||
|| (WiFi.waitForConnectResult(10000) != WL_CONNECTED)) { | ||
WiFi.mode(WIFI_OFF); | ||
Serial.println("Cannot connect!"); | ||
Serial.flush(); | ||
ESP.deepSleep(10e6, RF_DISABLED); | ||
return; | ||
} | ||
} | ||
|
||
unsigned long duration = millis() - start; | ||
Serial.printf("Duration: %f", duration * 0.001); | ||
Serial.println(); | ||
|
||
// --- | ||
// Here you can do whatever you need to do that needs a WiFi connection. | ||
// --- | ||
|
||
WiFi.mode(WIFI_SHUTDOWN, &state); | ||
ESP.rtcUserMemoryWrite(RTC_USER_DATA_SLOT_WIFI_STATE, reinterpret_cast<uint32_t *>(&state), sizeof(state)); | ||
|
||
// --- | ||
// Here you can do whatever you need to do that doesn't need a WiFi connection anymore. | ||
// --- | ||
|
||
Serial.println("Done."); | ||
Serial.flush(); | ||
ESP.deepSleep(10e6, RF_DISABLED); | ||
} | ||
|
||
void loop() { | ||
// Nothing to do here. | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.