Merge branch 'feature/light_sleep_reject' into 'master'

sleep: enable sleep reject when entering light sleep

Closes IDF-1678 and WIFI-1185

See merge request espressif/esp-idf!9242
This commit is contained in:
Ivan Grokhotkov
2020-06-29 15:57:49 +08:00
3 changed files with 22 additions and 2 deletions

View File

@@ -207,6 +207,14 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
touch_wakeup_prepare();
}
uint32_t reject_triggers = 0;
if ((pd_flags & RTC_SLEEP_PD_DIG) == 0) {
/* Light sleep, enable sleep reject for faster return from this function,
* in case the wakeup is already triggerred.
*/
reject_triggers = s_config.wakeup_triggers;
}
// Enter sleep
rtc_sleep_config_t config = RTC_SLEEP_CONFIG_DEFAULT(pd_flags);
rtc_sleep_init(config);
@@ -216,7 +224,8 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
s_config.sleep_duration > 0) {
timer_wakeup_prepare();
}
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, 0, 1);
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, reject_triggers, 1);
// Restore CPU frequency
rtc_clk_cpu_freq_set_config(&cpu_freq_config);