change(ble): Supported cuttable architecture for ble

This commit is contained in:
Shen Weilong
2025-02-20 17:36:55 +08:00
parent a03b8e13be
commit a92f4ed389
13 changed files with 667 additions and 243 deletions
+18 -1
View File
@@ -34,6 +34,7 @@
#include "os/endian.h"
#include "esp_bt.h"
#include "ble_priv.h"
#include "esp_intr_alloc.h"
#include "esp_sleep.h"
#include "esp_pm.h"
@@ -925,13 +926,19 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
goto modem_deint;
}
ESP_LOGI(NIMBLE_PORT_LOG_TAG, "ble controller commit:[%s]", ble_controller_get_compile_version());
ret = r_ble_controller_init(cfg);
if (ret != ESP_OK) {
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "r_ble_controller_init failed %d", ret);
goto modem_deint;
}
ESP_LOGI(NIMBLE_PORT_LOG_TAG, "ble controller commit:[%s]", ble_controller_get_compile_version());
ret = ble_stack_initEnv();
if (ret != ESP_OK) {
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "ble_stack_initEnv failed %d", ret);
goto free_controller;
}
ble_controller_scan_duplicate_config();
@@ -971,6 +978,7 @@ free_controller:
hci_transport_deinit();
controller_sleep_deinit();
os_msys_deinit();
ble_stack_deinitEnv();
r_ble_controller_deinit();
modem_deint:
esp_ble_unregister_bb_funcs();
@@ -1008,6 +1016,7 @@ esp_err_t esp_bt_controller_deinit(void)
// modem_clock_deselect_lp_clock_source(PERIPH_BT_MODULE);
modem_clock_module_disable(PERIPH_BT_MODULE);
ble_stack_deinitEnv();
r_ble_controller_deinit();
esp_ble_unregister_bb_funcs();
#if CONFIG_BT_LE_CONTROLLER_LOG_ENABLED
@@ -1061,6 +1070,12 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
r_ble_ll_scan_start_time_init_compensation(500);
r_priv_sdk_config_insert_proc_time_set(500);
#endif // CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY
if (ble_stack_enable() != 0) {
ret = ESP_FAIL;
goto error;
}
if (r_ble_controller_enable(mode) != 0) {
ret = ESP_FAIL;
goto error;
@@ -1069,6 +1084,7 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
return ESP_OK;
error:
ble_stack_disable();
#if CONFIG_SW_COEXIST_ENABLE
coex_disable();
#endif
@@ -1092,6 +1108,7 @@ esp_err_t esp_bt_controller_disable(void)
if (r_ble_controller_disable() != 0) {
return ESP_FAIL;
}
ble_stack_disable();
#if CONFIG_SW_COEXIST_ENABLE
coex_disable();
#endif