|
@@ -1439,6 +1439,23 @@ esp_err_t esp_bt_controller_deinit(void)
|
|
|
return ESP_OK;
|
|
return ESP_OK;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static void bt_shutdown(void)
|
|
|
|
|
+{
|
|
|
|
|
+ esp_err_t ret = ESP_OK;
|
|
|
|
|
+ ESP_LOGD(BTDM_LOG_TAG, "stop/deinit bt");
|
|
|
|
|
+
|
|
|
|
|
+ ret = esp_bt_controller_disable();
|
|
|
|
|
+ if (ESP_OK != ret) {
|
|
|
|
|
+ ESP_LOGW(BTDM_LOG_TAG, "controller disable ret=%d", ret);
|
|
|
|
|
+ }
|
|
|
|
|
+ ret = esp_bt_controller_deinit();
|
|
|
|
|
+ if (ESP_OK != ret) {
|
|
|
|
|
+ ESP_LOGW(BTDM_LOG_TAG, "controller deinit ret=%d", ret);
|
|
|
|
|
+ }
|
|
|
|
|
+ return;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
|
|
esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
|
|
|
{
|
|
{
|
|
|
int ret;
|
|
int ret;
|
|
@@ -1488,6 +1505,10 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_ENABLED;
|
|
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_ENABLED;
|
|
|
|
|
+ ret = esp_register_shutdown_handler(bt_shutdown);
|
|
|
|
|
+ if (ret != ESP_OK) {
|
|
|
|
|
+ ESP_LOGW(BTDM_LOG_TAG, "Register shutdown handler failed, ret = 0x%x", ret);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
return ESP_OK;
|
|
return ESP_OK;
|
|
|
}
|
|
}
|
|
@@ -1515,6 +1536,7 @@ esp_err_t esp_bt_controller_disable(void)
|
|
|
|
|
|
|
|
esp_phy_disable();
|
|
esp_phy_disable();
|
|
|
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_INITED;
|
|
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_INITED;
|
|
|
|
|
+ esp_unregister_shutdown_handler(bt_shutdown);
|
|
|
|
|
|
|
|
#ifdef CONFIG_PM_ENABLE
|
|
#ifdef CONFIG_PM_ENABLE
|
|
|
if (!s_btdm_allow_light_sleep) {
|
|
if (!s_btdm_allow_light_sleep) {
|