feat(bt): Added support for slot availablity mask functionality

This commit is contained in:
liqigan
2026-07-16 14:30:38 +08:00
committed by Wang Mengyang
parent cc979db24b
commit 48dd8b588f
3 changed files with 50 additions and 0 deletions
@@ -185,6 +185,26 @@ config BT_CTRL_BR_EDR_DTM_EN
help
Enable BR/EDR controller direct test mode
config BT_CTRL_BR_EDR_SAM_EN
bool "Enable BR/EDR controller Slot Availability Mask (READ DOCS FIRST) (EXPERIMENTAL)"
depends on IDF_EXPERIMENTAL_FEATURES
default n
help
Enable BR/EDR controller Slot Availability Mask(SAM).
Note: SAM functionality is partially implemented by software and only works on ACL air time scheduling.
config BT_CTRL_BR_EDR_MWS_EN
bool "Enable BR/EDR controller Mobile Wireless Standards coexistence (READ DOCS FIRST) (EXPERIMENTAL)"
depends on BT_CTRL_BR_EDR_SAM_EN
default n
help
Enable BR/EDR controller Mobile Wireless Standards(MWS) coexistence.
Note: MWS coexistence functionality is only partially implemented. Supported HCI Commands:
- HCI_Set_External_Frame_Configuration
- HCI_Set_MWS_PATTERN_Configuration
config BT_CTRL_BR_EDR_TX_CCA_ENABLED
bool "Enable BR/EDR TX CCA feature"
default n
@@ -77,6 +77,18 @@ extern "C" {
#define UC_BR_EDR_DTM_EN 0
#endif
#if defined(CONFIG_BT_CTRL_BR_EDR_SAM_EN) && CONFIG_BT_CTRL_BR_EDR_SAM_EN
#define UC_BR_EDR_SAM_EN 1
#else
#define UC_BR_EDR_SAM_EN 0
#endif
#if defined(CONFIG_BT_CTRL_BR_EDR_MWS_EN) && CONFIG_BT_CTRL_BR_EDR_MWS_EN
#define UC_BR_EDR_MWS_EN 1
#else
#define UC_BR_EDR_MWS_EN 0
#endif
#if defined(CONFIG_BT_CTRL_BR_EDR_TX_CCA_ENABLED)
#define UC_BR_EDR_TX_CCA_EN (CONFIG_BT_CTRL_BR_EDR_TX_CCA_ENABLED)
#else
@@ -123,6 +123,8 @@ extern int bredr_ctrl_feat_dtm_en(void);
extern int bredr_ctrl_feat_test_en(void);
extern int bredr_ctrl_feat_lk_store_en(void);
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 const char *co_orca_get_git_version_str(void);
extern void r_orca_log_set_printf(bredr_log_printf_fn printf_fn);
@@ -682,6 +684,22 @@ static int bredr_ctrl_setup_callback(void)
}
#endif /* UC_BR_EDR_DTM_EN */
#if UC_BR_EDR_SAM_EN
ret = bredr_ctrl_feat_sam_en();
if (ret != 0) {
ESP_LOGE(BREDR_LOG_TAG, "bredr_ctrl_feat_sam_en failed, ret:%d", ret);
break;
}
#endif /* UC_BR_EDR_SAM_EN */
#if UC_BR_EDR_MWS_EN
ret = bredr_ctrl_feat_mws_en();
if (ret != 0) {
ESP_LOGE(BREDR_LOG_TAG, "bredr_ctrl_feat_mws_en failed, ret:%d", ret);
break;
}
#endif /* UC_BR_EDR_MWS_EN */
#if CONFIG_SW_COEXIST_ENABLE
ret = bredr_ctrl_feat_coex_en();
if (ret != 0) {