diff --git a/components/bt/porting_btdm/controller/bredr/Kconfig.in b/components/bt/porting_btdm/controller/bredr/Kconfig.in index 47ac7d86c71..52cceb818b1 100644 --- a/components/bt/porting_btdm/controller/bredr/Kconfig.in +++ b/components/bt/porting_btdm/controller/bredr/Kconfig.in @@ -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 diff --git a/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h b/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h index 942caad1b02..d8b2911fd66 100644 --- a/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h +++ b/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h @@ -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 diff --git a/components/bt/porting_btdm/controller/bredr/src/bredr.c b/components/bt/porting_btdm/controller/bredr/src/bredr.c index 7d6f5947246..b8d93ef210d 100644 --- a/components/bt/porting_btdm/controller/bredr/src/bredr.c +++ b/components/bt/porting_btdm/controller/bredr/src/bredr.c @@ -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) {