Skip to content

Commit

Permalink
Merge branch 'bugfix/ble_light_sleep_error_on_esp32c2_master' into 'm…
Browse files Browse the repository at this point in the history
…aster'

Bugfix/ble light sleep error on esp32c2 master

Closes BLE-161 and BLE-162

See merge request espressif/esp-idf!20248
  • Loading branch information
jack0c committed Sep 21, 2022
2 parents 087f9c0 + 16c8a36 commit 292fe7c
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions components/bt/controller/esp32c2/bt.c
Expand Up @@ -171,6 +171,8 @@ static DRAM_ATTR bool s_btdm_allow_light_sleep;
// pm_lock to prevent light sleep when using main crystal as Bluetooth low power clock
static DRAM_ATTR esp_pm_lock_handle_t s_light_sleep_pm_lock;
#define BTDM_MIN_TIMER_UNCERTAINTY_US (200)
#else
static bool s_bt_phy_enabled = false;
#endif /* #ifdef CONFIG_PM_ENABLE */

#ifdef CONFIG_BT_LE_WAKEUP_SOURCE_BLE_RTC_TIMER
Expand Down Expand Up @@ -431,7 +433,8 @@ IRAM_ATTR void controller_sleep_cb(uint32_t enable_tick, void *arg)
esp_pm_lock_release(s_pm_lock);
s_pm_lock_acquired = false;
}

#else
s_bt_phy_enabled = false;
#endif // CONFIG_PM_ENABLE
}

Expand All @@ -445,6 +448,8 @@ IRAM_ATTR void controller_wakeup_cb(void *arg)
s_pm_lock_acquired = true;
esp_pm_lock_acquire(s_pm_lock);
}
#else
s_bt_phy_enabled = true;
#endif //CONFIG_PM_ENABLE
}

Expand All @@ -468,6 +473,8 @@ void controller_sleep_init(void)

#ifdef CONFIG_PM_ENABLE
s_btdm_allow_light_sleep = false;
#else
s_bt_phy_enabled = true;
#endif // CONFIG_PM_ENABLE

#ifdef CONFIG_BT_LE_SLEEP_ENABLE
Expand Down Expand Up @@ -550,18 +557,19 @@ void controller_sleep_deinit(void)
#ifdef CONFIG_PM_ENABLE
#ifdef CONFIG_BT_LE_WAKEUP_SOURCE_BLE_RTC_TIMER
r_ble_rtc_wake_up_state_clr();
esp_sleep_disable_bt_wakeup();
#endif
esp_sleep_pd_config(ESP_PD_DOMAIN_XTAL, ESP_PD_OPTION_AUTO);

/*lock should release first and then delete*/
if (s_pm_lock_acquired) {
if(s_light_sleep_pm_lock != NULL)
esp_pm_lock_release(s_light_sleep_pm_lock);
}
if (s_light_sleep_pm_lock != NULL) {
esp_pm_lock_release(s_light_sleep_pm_lock);
}

if(s_pm_lock != NULL) {
if (s_pm_lock != NULL) {
esp_pm_lock_release(s_pm_lock);
}
}
s_pm_lock_acquired = false;
}

Expand All @@ -582,7 +590,15 @@ void controller_sleep_deinit(void)
s_btdm_slp_tmr = NULL;
}
#endif
s_pm_lock_acquired = false;
if (s_pm_lock_acquired) {
esp_phy_disable();
s_pm_lock_acquired = false;
}
#else
if (s_bt_phy_enabled) {
esp_phy_disable();
s_bt_phy_enabled = false;
}
#endif

}
Expand Down Expand Up @@ -731,7 +747,6 @@ esp_err_t esp_bt_controller_deinit(void)

npl_freertos_mempool_deinit();

esp_phy_disable();
esp_phy_pd_mem_deinit();

ble_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
Expand Down

0 comments on commit 292fe7c

Please sign in to comment.