Skip to content

Commit d6ec931

Browse files
committed
Merge branch 'feature/set_cpu_sleep_mode' into 'master'
sleep: add function set CPU sleep mode See merge request sdk/ESP8266_RTOS_SDK!1116
2 parents da99eac + f2cb7b0 commit d6ec931

File tree

5 files changed

+20
-4
lines changed

5 files changed

+20
-4
lines changed

components/esp8266/include/esp_sleep.h

+5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ typedef enum {
2626
WIFI_MODEM_SLEEP_T
2727
} wifi_sleep_type_t;
2828

29+
typedef enum esp_sleep_mode {
30+
ESP_CPU_WAIT = 0,
31+
ESP_CPU_LIGHTSLEEP,
32+
} esp_sleep_mode_t;
33+
2934
typedef void (*fpm_wakeup_cb)(void);
3035

3136
/**

components/esp8266/lib/VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
gwen:
22
core: 743c778
3-
net80211: da5ae93
3+
net80211: 5d845dd
44
pp: 2c0db4c
55
wpa: 743c778
66
espnow: 743c778

components/esp8266/lib/libnet80211.a

104 Bytes
Binary file not shown.
104 Bytes
Binary file not shown.

components/esp8266/source/esp_sleep.c

+14-3
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ typedef struct pm_soc_clk {
5151
uint32_t frc2_cnt;
5252
} pm_soc_clk_t;
5353

54-
static uint32_t s_lock_cnt = 1;
54+
static uint16_t s_lock_cnt = 1;
55+
static esp_sleep_mode_t s_sleep_mode = ESP_CPU_WAIT;
5556
static uint32_t s_sleep_wakup_triggers;
5657
static uint32_t s_sleep_duration;
5758

@@ -116,6 +117,11 @@ static inline void update_soc_clk(pm_soc_clk_t *clk, uint32_t us)
116117
WdevTimOffSet += us;
117118
}
118119

120+
static int cpu_is_wait_mode(void)
121+
{
122+
return (s_sleep_mode == ESP_CPU_WAIT) || s_lock_cnt;
123+
}
124+
119125
void esp_wifi_hw_open(void)
120126
{
121127
phy_open_rf();
@@ -192,9 +198,14 @@ void esp_sleep_unlock(void)
192198
soc_restore_local_irq(irqflag);
193199
}
194200

201+
void esp_sleep_set_mode(esp_sleep_mode_t mode)
202+
{
203+
s_sleep_mode = mode;
204+
}
205+
195206
void esp_sleep_start(void)
196207
{
197-
if (s_lock_cnt) {
208+
if (cpu_is_wait_mode()) {
198209
soc_wait_int();
199210
return ;
200211
}
@@ -207,7 +218,7 @@ void esp_sleep_start(void)
207218
const esp_irqflag_t irqflag = soc_save_local_irq();
208219
const uint32_t wdevflag = save_local_wdev();
209220

210-
if (s_lock_cnt) {
221+
if (cpu_is_wait_mode()) {
211222
cpu_wait = 0;
212223
goto exit;
213224
}

0 commit comments

Comments
 (0)