fix(pm/ext1): ext1_wakeup_prepare func when s_config.wakeup_triggers & RTC_EXT1_TRIG_EN == false

pull/12501/merge
Lou Tianhao 2023-11-09 20:34:47 +08:00
rodzic cc0e73a11f
commit 5b91acb1a1
1 zmienionych plików z 11 dodań i 0 usunięć

Wyświetl plik

@ -259,6 +259,7 @@ static void ext0_wakeup_prepare(void);
#endif
#if SOC_PM_SUPPORT_EXT1_WAKEUP
static void ext1_wakeup_prepare(void);
static void IRAM_ATTR ext1_wakeup_clear(void);
#endif
static esp_err_t timer_wakeup_prepare(int64_t sleep_duration);
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
@ -638,6 +639,8 @@ static esp_err_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags, esp_sleep_mode_t m
#if SOC_PM_SUPPORT_EXT1_WAKEUP
if (s_config.wakeup_triggers & RTC_EXT1_TRIG_EN) {
ext1_wakeup_prepare();
} else {
ext1_wakeup_clear();
}
#endif
@ -1629,6 +1632,14 @@ static void ext1_wakeup_prepare(void)
rtc_hal_ext1_set_wakeup_pins(s_config.ext1_rtc_gpio_mask, s_config.ext1_trigger_mode);
}
static void ext1_wakeup_clear(void)
{
// Clear state from previous wakeup
rtc_hal_ext1_clear_wakeup_status();
// Clear all ext1 wakup-source setting
rtc_hal_ext1_clear_wakeup_pins();
}
uint64_t esp_sleep_get_ext1_wakeup_status(void)
{
if (esp_sleep_get_wakeup_cause() != ESP_SLEEP_WAKEUP_EXT1) {