diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index c8969691b8..055ea74637 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -114,6 +114,13 @@ void EspClass::deepSleep(uint64_t time_us, WakeMode mode) esp_yield(); } +void EspClass::deepSleepInstant(uint64_t time_us, WakeMode mode) +{ + system_deep_sleep_set_option(static_cast<int>(mode)); + system_deep_sleep_instant(time_us); + esp_yield(); +} + //this calculation was taken verbatim from the SDK api reference for SDK 2.1.0. //Note: system_rtc_clock_cali_proc() returns a uint32_t, even though system_deep_sleep() takes a uint64_t. uint64_t EspClass::deepSleepMax() diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index 43842a6ae7..60747251cf 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -93,6 +93,7 @@ class EspClass { void wdtFeed(); void deepSleep(uint64_t time_us, RFMode mode = RF_DEFAULT); + void deepSleepInstant(uint64_t time_us, RFMode mode = RF_DEFAULT); uint64_t deepSleepMax(); bool rtcUserMemoryRead(uint32_t offset, uint32_t *data, size_t size); diff --git a/doc/libraries.rst b/doc/libraries.rst index 77d92f6a00..ce22cb23ac 100644 --- a/doc/libraries.rst +++ b/doc/libraries.rst @@ -73,6 +73,8 @@ Some ESP-specific APIs related to deep sleep, RTC and flash memories are availab ``ESP.deepSleep(microseconds, mode)`` will put the chip into deep sleep. ``mode`` is one of ``WAKE_RF_DEFAULT``, ``WAKE_RFCAL``, ``WAKE_NO_RFCAL``, ``WAKE_RF_DISABLED``. (GPIO16 needs to be tied to RST to wake from deepSleep.) The chip can sleep for at most ``ESP.deepSleepMax()`` microseconds. +``ESP.deepSleepInstant(microseconds, mode)`` works similarly to ``ESP.deepSleep`` but sleeps instantly without waiting for WiFi to shutdown. + ``ESP.rtcUserMemoryWrite(offset, &data, sizeof(data))`` and ``ESP.rtcUserMemoryRead(offset, &data, sizeof(data))`` allow data to be stored in and retrieved from the RTC user memory of the chip respectively. Total size of RTC user memory is 512 bytes, so ``offset + sizeof(data)`` shouldn't exceed 512. Data should be 4-byte aligned. The stored data can be retained between deep sleep cycles. However, the data might be lost after power cycling the chip. ``ESP.restart()`` restarts the CPU.