diff --git a/components/bt/controller/esp32c3/bt.c b/components/bt/controller/esp32c3/bt.c index d6419a47d9..c4cd255fc7 100644 --- a/components/bt/controller/esp32c3/bt.c +++ b/components/bt/controller/esp32c3/bt.c @@ -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) diff --git a/components/bt/controller/esp32s3/bt.c b/components/bt/controller/esp32s3/bt.c index a28cee431d..a4bacd2d3e 100644 --- a/components/bt/controller/esp32s3/bt.c +++ b/components/bt/controller/esp32s3/bt.c @@ -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)