idfxx 1.0.0
Modern C++23 components for ESP-IDF
Loading...
Searching...
No Matches
sleep.hpp File Reference

Light and deep sleep with type-safe wake-up source configuration. More...

#include <idfxx/error>
#include <idfxx/gpio>
#include <chrono>
#include <concepts>
#include <cstdint>
#include <initializer_list>
#include <optional>
#include <soc/soc_caps.h>
#include <string>
#include <type_traits>
#include "sdkconfig.h"

Go to the source code of this file.

Classes

struct  idfxx::sleep::timer_wake
 Wakes the chip after a fixed duration of sleep. More...
 
struct  idfxx::sleep::gpio_wake
 Wakes the chip from light sleep when a digital pin is at a level. More...
 
struct  idfxx::sleep::ext0_wake
 Wakes the chip when a single RTC-capable pin is at a level (EXT0). More...
 
class  idfxx::sleep::ext1_wake
 Wakes the chip on levels of one or more RTC-capable pins (EXT1). More...
 
class  idfxx::sleep::deep_sleep_gpio_wake
 Wakes the chip from deep sleep on levels of one or more pins. More...
 

Namespaces

namespace  idfxx
 
namespace  idfxx::sleep
 

Concepts

concept  idfxx::sleep::wake_spec
 A wake-up source specification accepted by the sleep functions.
 

Enumerations

enum class  idfxx::sleep::wakeup_source : int {
  idfxx::sleep::ext0 = 2 ,
  idfxx::sleep::ext1 = 3 ,
  idfxx::sleep::timer = 4 ,
  idfxx::sleep::touchpad = 5 ,
  idfxx::sleep::ulp = 6 ,
  idfxx::sleep::gpio = 7 ,
  idfxx::sleep::uart = 8 ,
  idfxx::sleep::wifi = 9 ,
  idfxx::sleep::cocpu = 10 ,
  idfxx::sleep::cocpu_trap = 11 ,
  idfxx::sleep::bt = 12 ,
  idfxx::sleep::other = 13
}
 Wake-up sources and causes. More...
 
enum class  idfxx::sleep::ext1_mode : int {
  idfxx::sleep::any_low = 0 ,
  idfxx::sleep::any_high = 1
}
 EXT1 wake-up trigger mode. More...
 
enum class  idfxx::sleep::deep_sleep_gpio_mode : int {
  idfxx::sleep::wake_low = 0 ,
  idfxx::sleep::wake_high = 1
}
 Trigger level for deep-sleep GPIO wake-up. More...
 

Functions

std::string idfxx::sleep::to_string (wakeup_source source)
 Returns a string representation of a wake-up source.
 
template<wake_spec... Sources>
result< wakeup_sourceidfxx::sleep::try_light_sleep (const Sources &... sources)
 Enters light sleep until one of the given wake-up sources triggers.
 
template<wake_spec... Sources>
wakeup_source idfxx::sleep::light_sleep (const Sources &... sources)
 Enters light sleep until one of the given wake-up sources triggers.
 
wakeup_source idfxx::sleep::light_sleep_for (std::chrono::microseconds duration)
 Enters light sleep for a fixed duration.
 
result< wakeup_sourceidfxx::sleep::try_light_sleep_for (std::chrono::microseconds duration)
 Enters light sleep for a fixed duration.
 
template<wake_spec First, wake_spec... Rest>
result< voididfxx::sleep::try_deep_sleep (const First &first, const Rest &... rest)
 Enters deep sleep until one of the given wake-up sources triggers.
 
template<wake_spec First, wake_spec... Rest>
void idfxx::sleep::deep_sleep (const First &first, const Rest &... rest)
 Enters deep sleep until one of the given wake-up sources triggers.
 
void idfxx::sleep::deep_sleep () noexcept
 Enters deep sleep until a previously armed wake-up source triggers.
 
void idfxx::sleep::deep_sleep (std::chrono::microseconds duration) noexcept
 Enters deep sleep for a fixed duration.
 
std::optional< wakeup_sourceidfxx::sleep::wakeup_cause () noexcept
 Returns the cause of the most recent wake from sleep.
 
uint64_t idfxx::sleep::ext1_wakeup_status () noexcept
 Returns the pins that triggered the most recent EXT1 wake.
 
template<wake_spec Source>
void idfxx::sleep::enable_wakeup (const Source &source)
 Arms a wake-up source persistently.
 
template<wake_spec Source>
result< voididfxx::sleep::try_enable_wakeup (const Source &source)
 Arms a wake-up source persistently.
 
void idfxx::sleep::disable_wakeup_source (wakeup_source source)
 Disarms a previously armed wake-up source.
 
void idfxx::sleep::disable_all_wakeup_sources ()
 Disarms every armed wake-up source.
 
result< voididfxx::sleep::try_disable_wakeup_source (wakeup_source source)
 Disarms a previously armed wake-up source.
 
result< voididfxx::sleep::try_disable_all_wakeup_sources ()
 Disarms every armed wake-up source.
 

Detailed Description

Light and deep sleep with type-safe wake-up source configuration.

Definition in file sleep.hpp.