component/bt: fixed the assert in checking hardware sleep state during wake-up

The hardware sleep state change can take some time after wake-up interrupt. Use busy waiting instead of directly assert
This commit is contained in:
wangmengyang 2021-06-24 08:11:44 +08:00 committed by bot
parent cfb6857f53
commit a024de7cac
2 changed files with 12 additions and 8 deletions

View File

@ -710,10 +710,6 @@ static void btdm_sleep_exit_phase3_wrapper(void)
}
#endif
if(btdm_sleep_clock_sync()) {
ESP_LOGE(BTDM_LOG_TAG, "sleep eco state err\n");
assert(0);
}
if (btdm_controller_get_sleep_mode() == ESP_BT_SLEEP_MODE_1) {
if (s_lp_stat.phy_enabled == 0) {
esp_phy_enable();
@ -728,6 +724,12 @@ static void btdm_sleep_exit_phase3_wrapper(void)
esp_timer_stop(s_btdm_slp_tmr);
s_lp_stat.wakeup_timer_started = 0;
}
// wait for the sleep state to change
// the procedure duration is at micro-second level or less
while (btdm_sleep_clock_sync()) {
;
}
}
static void IRAM_ATTR btdm_sleep_exit_phase0(void *param)

View File

@ -710,10 +710,6 @@ static void btdm_sleep_exit_phase3_wrapper(void)
}
#endif
if(btdm_sleep_clock_sync()) {
ESP_LOGE(BT_LOG_TAG, "sleep eco state err\n");
assert(0);
}
if (btdm_controller_get_sleep_mode() == ESP_BT_SLEEP_MODE_1) {
if (s_lp_stat.phy_enabled == 0) {
esp_phy_enable();
@ -728,6 +724,12 @@ static void btdm_sleep_exit_phase3_wrapper(void)
esp_timer_stop(s_btdm_slp_tmr);
s_lp_stat.wakeup_timer_started = 0;
}
// wait for the sleep state to change
// the procedure duration is at micro-second level or less
while (btdm_sleep_clock_sync()) {
;
}
}
static void IRAM_ATTR btdm_sleep_exit_phase0(void *param)