diff --git a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib index 849186e8618..aa32061d9f9 160000 --- a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib +++ b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib @@ -1 +1 @@ -Subproject commit 849186e861821a30d2c3ef519dfdb08ef68b7cee +Subproject commit aa32061d9f9377f499b58ea3bb88f2473f96a22f diff --git a/components/bt/porting_btdm/controller/bredr/src/bredr.c b/components/bt/porting_btdm/controller/bredr/src/bredr.c index 4ff407bcf42..abb87781d69 100644 --- a/components/bt/porting_btdm/controller/bredr/src/bredr.c +++ b/components/bt/porting_btdm/controller/bredr/src/bredr.c @@ -128,6 +128,7 @@ extern int bredr_ctrl_feat_coex_en(void); extern int bredr_ctrl_feat_sam_en(void); extern int bredr_ctrl_feat_mws_en(void); +extern void bredr_ctrl_get_btdm_info(uint32_t *version, uint32_t *size); extern const char *co_orca_get_git_version_str(void); extern void r_orca_log_set_printf(bredr_log_printf_fn printf_fn); /* Shutdown */ @@ -918,6 +919,14 @@ int esp_bredr_controller_init(esp_bt_controller_config_t *cfg) cfg->bredr.mempool_size = 1024 * (cfg->bredr.max_acl_conn + 2); cfg->bredr.mempool_ops = &s_orca_mempool_ops; + uint32_t bredr_btdm_version = 0; + uint32_t bredr_btdm_size = 0; + bredr_ctrl_get_btdm_info(&bredr_btdm_version, &bredr_btdm_size); + if ((cfg->btdm.version != bredr_btdm_version) || (sizeof(esp_bt_ctrl_btdm_config_t) != bredr_btdm_size)) { + ESP_LOGE(BREDR_LOG_TAG, "btdm version used by bredr check failed, version:%x, size:%d", bredr_btdm_version, bredr_btdm_size); + return ESP_ERR_INVALID_VERSION; + } + status = bredr_controller_init(&cfg->bredr); if (status != 0) { ESP_LOGE(BREDR_LOG_TAG, "bredr_controller_init failed, status:%d", status);