Mbed OS Reference
Loading...
Searching...
No Matches

The sleep manager provides API to automatically select sleep mode. More...

Modules

 Sleep manager API tests
 Tests to validate the proper implementation of the sleep manager.
 

Functions

void sleep_manager_lock_deep_sleep_internal (void)
 Lock the deep sleep mode. More...
 
void sleep_manager_unlock_deep_sleep_internal (void)
 Unlock the deep sleep mode. More...
 
bool sleep_manager_can_deep_sleep (void)
 Get the status of deep sleep allowance for a target. More...
 
bool sleep_manager_can_deep_sleep_test_check (void)
 Check if the target can deep sleep within a period of time. More...
 
void sleep_manager_sleep_auto (void)
 Enter auto selected sleep mode. More...
 
us_timestamp_t mbed_time_sleep (void)
 Provides the time spent in sleep mode since boot. More...
 
us_timestamp_t mbed_time_deepsleep (void)
 Provides the time spent in deep sleep mode since boot. More...
 
us_timestamp_t mbed_time_idle (void)
 Provides the time spent in idle mode since boot. More...
 
us_timestamp_t mbed_uptime (void)
 Provides the time since the system is up i.e. More...
 

Detailed Description

The sleep manager provides API to automatically select sleep mode.

There are two sleep modes:

Use locking/unlocking deepsleep for drivers that depend on features that are not allowed (=disabled) during the deepsleep. For instance, high frequency clocks.

Defined behavior

Example:

void driver::handler()
{
if (_sensor.get_event()) {
// any event - we are finished, unlock the deepsleep
sleep_manager_unlock_deep_sleep();
_callback();
}
}
int driver::measure(event_t event, callback_t& callback)
{
_callback = callback;
sleep_manager_lock_deep_sleep();
// start async transaction, we are waiting for an event
return _sensor.start(event, callback);
}
Callback< R(ArgTs...)> callback(R(*func)(ArgTs...)=nullptr) noexcept
Create a callback class with type inferred from the arguments.
Definition: Callback.h:678

Function Documentation

◆ sleep_manager_lock_deep_sleep_internal()

void sleep_manager_lock_deep_sleep_internal ( void  )

Lock the deep sleep mode.

This locks the automatic deep mode selection. sleep_manager_sleep_auto() will ignore deepsleep mode if this function is invoked at least once (the internal counter is non-zero)

Use this locking mechanism for interrupt driven API that are running in the background and deepsleep could affect their functionality

The lock is a counter, can be locked up to USHRT_MAX This function is IRQ and thread safe

◆ sleep_manager_unlock_deep_sleep_internal()

void sleep_manager_unlock_deep_sleep_internal ( void  )

Unlock the deep sleep mode.

Use unlocking in pair with sleep_manager_lock_deep_sleep().

The lock is a counter, should be equally unlocked as locked This function is IRQ and thread safe

◆ sleep_manager_can_deep_sleep()

bool sleep_manager_can_deep_sleep ( void  )

Get the status of deep sleep allowance for a target.

Returns
true if a target can go to deepsleep, false otherwise

◆ sleep_manager_can_deep_sleep_test_check()

bool sleep_manager_can_deep_sleep_test_check ( void  )

Check if the target can deep sleep within a period of time.

This function in intended for use in testing. The amount of time this functions waits for deeps sleep to be available is currently 2ms. This may change in the future depending on testing requirements.

Returns
true if a target can go to deepsleep, false otherwise

◆ sleep_manager_sleep_auto()

void sleep_manager_sleep_auto ( void  )

Enter auto selected sleep mode.

It chooses the sleep or deepsleep modes based on the deepsleep locking counter

This function is IRQ and thread safe

Note
If MBED_DEBUG is defined, only hal_sleep is allowed. This ensures the debugger to be active for debug modes.

◆ mbed_time_sleep()

us_timestamp_t mbed_time_sleep ( void  )

Provides the time spent in sleep mode since boot.

Returns
Time spent in sleep
Note
Works only if platform supports LP ticker.

◆ mbed_time_deepsleep()

us_timestamp_t mbed_time_deepsleep ( void  )

Provides the time spent in deep sleep mode since boot.

Returns
Time spent in deep sleep
Note
Works only if platform supports LP ticker.

◆ mbed_time_idle()

us_timestamp_t mbed_time_idle ( void  )

Provides the time spent in idle mode since boot.

Returns
Idle thread time.
Note
Works only if platform supports LP ticker.

◆ mbed_uptime()

us_timestamp_t mbed_uptime ( void  )

Provides the time since the system is up i.e.

boot.

Returns
System uptime.
Note
Works only if platform supports LP ticker.