feat(ble): support sid filter feature on ESP32C6

This commit is contained in:
cjin
2026-01-13 10:21:33 +08:00
committed by Rahul Tank
parent 6e59e1bf4f
commit dcebe6bbac
3 changed files with 51 additions and 3 deletions
+35 -1
View File
@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -27,6 +27,16 @@ void extAdv_stack_deinitEnv(void);
int extAdv_stack_enable(void); int extAdv_stack_enable(void);
void extAdv_stack_disable(void); void extAdv_stack_disable(void);
int scan_stack_initEnv(void);
void scan_stack_deinitEnv(void);
int scan_stack_enable(void);
void scan_stack_disable(void);
int scan_stack_initEnv(void);
void scan_stack_deinitEnv(void);
int scan_stack_enable(void);
void scan_stack_disable(void);
int sync_stack_initEnv(void); int sync_stack_initEnv(void);
void sync_stack_deinitEnv(void); void sync_stack_deinitEnv(void);
int sync_stack_enable(void); int sync_stack_enable(void);
@@ -84,6 +94,12 @@ void winWiden_stack_enableSetConstPeerScaVsCmd(bool en);
void adv_stack_enableScanReqRxdVsEvent(bool en); void adv_stack_enableScanReqRxdVsEvent(bool en);
void conn_stack_enableChanMapUpdCompVsEvent(bool en); void conn_stack_enableChanMapUpdCompVsEvent(bool en);
void sleep_stack_enableWakeupVsEvent(bool en); void sleep_stack_enableWakeupVsEvent(bool en);
#if DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
void scan_stack_enableSetScanADIOnlyFilterVsCmd(bool en);
#endif // DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
#if DEFAULT_BT_ADV_SEND_CONSTANT_DID
void extAdv_stack_setExtAdvConstantDidVsCmd(bool en);
#endif // DEFAULT_BT_ADV_SEND_CONSTANT_DID
#endif // (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED) #endif // (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
#if CONFIG_BT_LE_RXBUF_OPT_ENABLED #if CONFIG_BT_LE_RXBUF_OPT_ENABLED
extern void mmgmt_enableRxbufOptFeature(void); extern void mmgmt_enableRxbufOptFeature(void);
@@ -104,6 +120,12 @@ void ble_stack_enableVsCmds(bool en)
log_stack_enableLogsRelatedVsCmd(en); log_stack_enableLogsRelatedVsCmd(en);
hci_stack_enableSetVsEvtMaskVsCmd(en); hci_stack_enableSetVsEvtMaskVsCmd(en);
winWiden_stack_enableSetConstPeerScaVsCmd(en); winWiden_stack_enableSetConstPeerScaVsCmd(en);
#if DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
scan_stack_enableSetScanADIOnlyFilterVsCmd(en);
#endif // DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
#if DEFAULT_BT_ADV_SEND_CONSTANT_DID
extAdv_stack_setExtAdvConstantDidVsCmd(en);
#endif // DEFAULT_BT_ADV_SEND_CONSTANT_DID
} }
void ble_stack_enableVsEvents(bool en) void ble_stack_enableVsEvents(bool en)
@@ -136,6 +158,11 @@ int ble_stack_initEnv(void)
return rc; return rc;
} }
rc = scan_stack_initEnv();
if (rc) {
return rc;
}
rc = sync_stack_initEnv(); rc = sync_stack_initEnv();
if (rc) { if (rc) {
return rc; return rc;
@@ -210,6 +237,7 @@ void ble_stack_deinitEnv(void)
#endif // CONFIG_BT_LE_DTM_ENABLED #endif // CONFIG_BT_LE_DTM_ENABLED
sync_stack_deinitEnv(); sync_stack_deinitEnv();
scan_stack_deinitEnv();
extAdv_stack_deinitEnv(); extAdv_stack_deinitEnv();
adv_stack_deinitEnv(); adv_stack_deinitEnv();
base_stack_deinitEnv(); base_stack_deinitEnv();
@@ -234,6 +262,11 @@ int ble_stack_enable(void)
return rc; return rc;
} }
rc = scan_stack_enable();
if (rc) {
return rc;
}
rc = sync_stack_enable(); rc = sync_stack_enable();
if (rc) { if (rc) {
return rc; return rc;
@@ -302,6 +335,7 @@ void ble_stack_disable(void)
dtm_stack_disable(); dtm_stack_disable();
#endif // CONFIG_BT_LE_DTM_ENABLED #endif // CONFIG_BT_LE_DTM_ENABLED
sync_stack_disable(); sync_stack_disable();
scan_stack_disable();
extAdv_stack_disable(); extAdv_stack_disable();
adv_stack_disable(); adv_stack_disable();
base_stack_disable(); base_stack_disable();
+13 -1
View File
@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -51,6 +51,16 @@ extern "C" {
#else #else
#define DEFAULT_BT_LE_PAWR_SUPPORTED (0) #define DEFAULT_BT_LE_PAWR_SUPPORTED (0)
#endif // CONFIG_BT_NIMBLE_PERIODIC_ADV_WITH_RESPONSES #endif // CONFIG_BT_NIMBLE_PERIODIC_ADV_WITH_RESPONSES
#if CONFIG_BT_NIMBLE_ADV_SEND_CONSTANT_DID
#define DEFAULT_BT_ADV_SEND_CONSTANT_DID (1)
#else
#define DEFAULT_BT_ADV_SEND_CONSTANT_DID (0)
#endif // CONFIG_BT_NIMBLE_ADV_SEND_CONSTANT_DID
#if CONFIG_BT_NIMBLE_SCAN_ALLOW_ENH_ADI_FILTER
#define DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER (1)
#else
#define DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER (0)
#endif // CONFIG_BT_NIMBLE_SCAN_ALLOW_ENH_ADI_FILTER
#else #else
#if CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY #if CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY
@@ -158,6 +168,8 @@ extern "C" {
#endif #endif
#define DEFAULT_BT_LE_SUBRATE_ENABLED 0 #define DEFAULT_BT_LE_SUBRATE_ENABLED 0
#define DEFAULT_BT_ADV_SEND_CONSTANT_DID (0)
#define DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER (0)
#endif #endif
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF #define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF
@@ -156,7 +156,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/ */
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle); esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251125 #define CONFIG_VERSION 0x20251211
#define CONFIG_MAGIC 0x5A5AA5A5 #define CONFIG_MAGIC 0x5A5AA5A5
/** /**
@@ -237,6 +237,7 @@ typedef struct {
uint8_t priority_level_cfg; /*!< The option for priority level configuration */ uint8_t priority_level_cfg; /*!< The option for priority level configuration */
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */ uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */ uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint8_t scan_allow_adi_filter; /*!< The option for ext scan to allow PDU with specific adi. */
uint32_t config_magic; /*!< Magic number for configuration validation */ uint32_t config_magic; /*!< Magic number for configuration validation */
} esp_bt_controller_config_t; } esp_bt_controller_config_t;
@@ -304,6 +305,7 @@ typedef struct {
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \ .priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \ .slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \ .dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.scan_allow_adi_filter = DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER, \
.config_magic = CONFIG_MAGIC, \ .config_magic = CONFIG_MAGIC, \
} }
#elif CONFIG_IDF_TARGET_ESP32C61 #elif CONFIG_IDF_TARGET_ESP32C61