CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::hal::Esp32SleepController Class Reference
Inheritance diagram for cdc::hal::Esp32SleepController:
cdc::hal::ISleepController cdc::core::IService

Public Member Functions

 Esp32SleepController ()=default
bool init () override
 Initializes sleep controller configuration and wake-state tracking.
bool start () override
void stop () override
core::ServiceState getState () const override
const char * getName () const override
void enterLightSleep () override
 Enters light sleep with configured wake sources.
void enterDeepSleep () override
 Enters deep sleep mode and never returns.
WakeupSource getWakeupSource () const override
 Returns last wakeup source reported by ESP-IDF.
bool wasInDeepSleep () const override
void clearDeepSleepFlag () override
void setLightSleepInterval (uint32_t seconds) override
 Updates light-sleep interval and persists it.
uint32_t getLightSleepInterval () const override
void prepareGpioForSleep () override
 Prepares GPIO/keypad state for entering sleep.
void stabilizeGpioAfterWakeup () override
 Restores/stabilizes GPIO/keypad state after wake.
bool registerPreSleepCallback (const SleepCallbackEntry &entry) override
 Registers callback invoked before sleep transition.
bool registerWakeupCallback (const SleepCallbackEntry &entry) override
 Registers callback invoked after wakeup.
void unregisterCallbacks (const char *moduleName) override
 Removes all callbacks belonging to one module.
Public Member Functions inherited from cdc::hal::ISleepController
virtual ~ISleepController ()=default
Public Member Functions inherited from cdc::core::IService
virtual ~IService ()=default

Detailed Description

Definition at line 50 of file SleepController.cpp.

Constructor & Destructor Documentation

◆ Esp32SleepController()

cdc::hal::Esp32SleepController::Esp32SleepController ( )
default

Member Function Documentation

◆ clearDeepSleepFlag()

void cdc::hal::Esp32SleepController::clearDeepSleepFlag ( )
inlineoverridevirtual

Clear deep sleep flag (call after handling deep sleep wake)

Implements cdc::hal::ISleepController.

Definition at line 66 of file SleepController.cpp.

References cdc::hal::g_was_in_deep_sleep.

◆ enterDeepSleep()

void cdc::hal::Esp32SleepController::enterDeepSleep ( )
overridevirtual

Enters deep sleep mode and never returns.

Implements cdc::hal::ISleepController.

Definition at line 192 of file SleepController.cpp.

References EXP_IRQ_PIN, cdc::hal::g_diag_deep_sleep_count, cdc::hal::g_was_in_deep_sleep, LOG_I, and TAG.

◆ enterLightSleep()

void cdc::hal::Esp32SleepController::enterLightSleep ( )
overridevirtual

Enters light sleep with configured wake sources.

Implements cdc::hal::ISleepController.

Definition at line 138 of file SleepController.cpp.

References EXP_IRQ_PIN, LOG_D, LOG_I, prepareGpioForSleep(), stabilizeGpioAfterWakeup(), and TAG.

◆ getLightSleepInterval()

uint32_t cdc::hal::Esp32SleepController::getLightSleepInterval ( ) const
inlineoverridevirtual

Get light sleep timer interval

Implements cdc::hal::ISleepController.

Definition at line 68 of file SleepController.cpp.

◆ getName()

const char * cdc::hal::Esp32SleepController::getName ( ) const
inlineoverridevirtual

Get service name (for logging/debugging)

Implements cdc::core::IService.

Definition at line 59 of file SleepController.cpp.

◆ getState()

core::ServiceState cdc::hal::Esp32SleepController::getState ( ) const
inlineoverridevirtual

Get current service state

Implements cdc::core::IService.

Definition at line 58 of file SleepController.cpp.

◆ getWakeupSource()

WakeupSource cdc::hal::Esp32SleepController::getWakeupSource ( ) const
overridevirtual

Returns last wakeup source reported by ESP-IDF.

Returns
Wakeup source enum value.

Implements cdc::hal::ISleepController.

Definition at line 215 of file SleepController.cpp.

References cdc::hal::EXT0, cdc::hal::EXT1, cdc::hal::GPIO, cdc::hal::TIMER, cdc::hal::TOUCHPAD, and cdc::hal::UNKNOWN.

◆ init()

bool cdc::hal::Esp32SleepController::init ( )
overridevirtual

Initializes sleep controller configuration and wake-state tracking.

Returns
true on successful initialization.

Implements cdc::core::IService.

Definition at line 99 of file SleepController.cpp.

References cdc::hal::g_diag_boot_count, cdc::hal::g_diag_deep_sleep_count, cdc::hal::g_was_in_deep_sleep, cdc::core::INITIALIZED, LOG_I, LOG_W, cdc::core::STARTED, TAG, and cdc::core::UNINITIALIZED.

◆ prepareGpioForSleep()

void cdc::hal::Esp32SleepController::prepareGpioForSleep ( )
overridevirtual

Prepares GPIO/keypad state for entering sleep.

Implements cdc::hal::ISleepController.

Definition at line 253 of file SleepController.cpp.

References cdc::hal::getKeypadInstance(), LOG_D, and TAG.

Referenced by enterLightSleep().

◆ registerPreSleepCallback()

bool cdc::hal::Esp32SleepController::registerPreSleepCallback ( const SleepCallbackEntry & entry)
overridevirtual

Registers callback invoked before sleep transition.

Parameters
entryCallback registration descriptor.
Returns
true on successful registration.

Implements cdc::hal::ISleepController.

Definition at line 319 of file SleepController.cpp.

◆ registerWakeupCallback()

bool cdc::hal::Esp32SleepController::registerWakeupCallback ( const SleepCallbackEntry & entry)
overridevirtual

Registers callback invoked after wakeup.

Parameters
entryCallback registration descriptor.
Returns
true on successful registration.

Implements cdc::hal::ISleepController.

Definition at line 328 of file SleepController.cpp.

◆ setLightSleepInterval()

void cdc::hal::Esp32SleepController::setLightSleepInterval ( uint32_t seconds)
overridevirtual

Updates light-sleep interval and persists it.

Parameters
secondsNew interval in seconds.

Implements cdc::hal::ISleepController.

Definition at line 238 of file SleepController.cpp.

References LOG_I, and TAG.

◆ stabilizeGpioAfterWakeup()

void cdc::hal::Esp32SleepController::stabilizeGpioAfterWakeup ( )
overridevirtual

Restores/stabilizes GPIO/keypad state after wake.

Implements cdc::hal::ISleepController.

Definition at line 266 of file SleepController.cpp.

References cdc::hal::getKeypadInstance(), LOG_D, and TAG.

Referenced by enterLightSleep().

◆ start()

bool cdc::hal::Esp32SleepController::start ( )
inlineoverridevirtual

Start the service (can be called after init or stop)

Returns
true on success

Implements cdc::core::IService.

Definition at line 56 of file SleepController.cpp.

References cdc::core::STARTED.

◆ stop()

void cdc::hal::Esp32SleepController::stop ( )
inlineoverridevirtual

Stop the service (reversible, can start again)

Implements cdc::core::IService.

Definition at line 57 of file SleepController.cpp.

References cdc::core::STOPPED.

◆ unregisterCallbacks()

void cdc::hal::Esp32SleepController::unregisterCallbacks ( const char * moduleName)
overridevirtual

Removes all callbacks belonging to one module.

Parameters
moduleNameModule name key.

Implements cdc::hal::ISleepController.

Definition at line 336 of file SleepController.cpp.

References LOG_I, and TAG.

◆ wasInDeepSleep()

bool cdc::hal::Esp32SleepController::wasInDeepSleep ( ) const
inlineoverridevirtual

Check if device just woke from deep sleep (persistent flag in RTC memory)

Implements cdc::hal::ISleepController.

Definition at line 65 of file SleepController.cpp.

References cdc::hal::g_was_in_deep_sleep.


The documentation for this class was generated from the following file: