PebbleOS
Loading...
Searching...
No Matches
Enumerations | Functions
SF32LB

SiFli SF32LB52 SoC interfaces. More...

Enumerations

enum  SocSf32lbSleepLevel { SOC_SF32LB_ACTIVE = 0 , SOC_SF32LB_WFI , SOC_SF32LB_DEEPWFI , SOC_SF32LB_DEEPSLEEP }
 Sleep levels, ordered from shallowest to deepest. More...
 

Functions

void soc_sf32lb_sleep_block (SocSf32lbSleepLevel level)
 Block a sleep level and every deeper one.
 
void soc_sf32lb_sleep_release (SocSf32lbSleepLevel level)
 Release a block taken with soc_sf32lb_sleep_block().
 
SocSf32lbSleepLevel soc_sf32lb_sleep_max_level (void)
 Get the deepest sleep level currently permitted.
 

Detailed Description

SiFli SF32LB52 SoC interfaces.

The idle thread enters the deepest sleep level that no driver has blocked. A driver whose peripheral would not survive a level blocks it while active:

soc_sf32lb_sleep_block(SOC_SF32LB_DEEPSLEEP); // the PWM does not run in deep sleep
prv_pwm_start();
prv_pwm_wait_done();
prv_pwm_stop();
void soc_sf32lb_sleep_release(SocSf32lbSleepLevel level)
Release a block taken with soc_sf32lb_sleep_block().
void soc_sf32lb_sleep_block(SocSf32lbSleepLevel level)
Block a sleep level and every deeper one.
@ SOC_SF32LB_DEEPSLEEP
Deep sleep.
Definition sleep.h:33

Enumeration Type Documentation

◆ SocSf32lbSleepLevel

Sleep levels, ordered from shallowest to deepest.

Enumerator
SOC_SF32LB_ACTIVE 

No sleep at all.

SOC_SF32LB_WFI 

Light WFI.

SOC_SF32LB_DEEPWFI 

Deep WFI.

SOC_SF32LB_DEEPSLEEP 

Deep sleep.

Function Documentation

◆ soc_sf32lb_sleep_block()

void soc_sf32lb_sleep_block ( SocSf32lbSleepLevel  level)

Block a sleep level and every deeper one.

For example, blocking SOC_SF32LB_DEEPWFI forbids deep WFI and deep sleep, leaving plain WFI as the deepest permitted level. Refcounted; balance each call with soc_sf32lb_sleep_release(). Safe to call concurrently, including from ISRs.

Parameters
levelLevel to block; SOC_SF32LB_ACTIVE cannot be blocked.

◆ soc_sf32lb_sleep_max_level()

SocSf32lbSleepLevel soc_sf32lb_sleep_max_level ( void  )

Get the deepest sleep level currently permitted.

Returns
One step shallower than the shallowest outstanding block, or SOC_SF32LB_DEEPSLEEP with no blocks.

◆ soc_sf32lb_sleep_release()

void soc_sf32lb_sleep_release ( SocSf32lbSleepLevel  level)

Release a block taken with soc_sf32lb_sleep_block().

Parameters
levelLevel passed to soc_sf32lb_sleep_block().