diff --git a/components/bt/controller/esp32c6/ble.c b/components/bt/controller/esp32c6/ble.c index 792211e83f..7b5e76abe8 100644 --- a/components/bt/controller/esp32c6/ble.c +++ b/components/bt/controller/esp32c6/ble.c @@ -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 */ @@ -27,6 +27,16 @@ void extAdv_stack_deinitEnv(void); int extAdv_stack_enable(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); void sync_stack_deinitEnv(void); int sync_stack_enable(void); @@ -84,6 +94,12 @@ void winWiden_stack_enableSetConstPeerScaVsCmd(bool en); void adv_stack_enableScanReqRxdVsEvent(bool en); void conn_stack_enableChanMapUpdCompVsEvent(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) #if CONFIG_BT_LE_RXBUF_OPT_ENABLED extern void mmgmt_enableRxbufOptFeature(void); @@ -104,6 +120,12 @@ void ble_stack_enableVsCmds(bool en) log_stack_enableLogsRelatedVsCmd(en); hci_stack_enableSetVsEvtMaskVsCmd(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) @@ -136,6 +158,11 @@ int ble_stack_initEnv(void) return rc; } + rc = scan_stack_initEnv(); + if (rc) { + return rc; + } + rc = sync_stack_initEnv(); if (rc) { return rc; @@ -210,6 +237,7 @@ void ble_stack_deinitEnv(void) #endif // CONFIG_BT_LE_DTM_ENABLED sync_stack_deinitEnv(); + scan_stack_deinitEnv(); extAdv_stack_deinitEnv(); adv_stack_deinitEnv(); base_stack_deinitEnv(); @@ -234,6 +262,11 @@ int ble_stack_enable(void) return rc; } + rc = scan_stack_enable(); + if (rc) { + return rc; + } + rc = sync_stack_enable(); if (rc) { return rc; @@ -302,6 +335,7 @@ void ble_stack_disable(void) dtm_stack_disable(); #endif // CONFIG_BT_LE_DTM_ENABLED sync_stack_disable(); + scan_stack_disable(); extAdv_stack_disable(); adv_stack_disable(); base_stack_disable(); diff --git a/components/bt/controller/esp32c6/esp_bt_cfg.h b/components/bt/controller/esp32c6/esp_bt_cfg.h index da9b2476a2..9ed552ccf5 100644 --- a/components/bt/controller/esp32c6/esp_bt_cfg.h +++ b/components/bt/controller/esp32c6/esp_bt_cfg.h @@ -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 */ @@ -51,6 +51,16 @@ extern "C" { #else #define DEFAULT_BT_LE_PAWR_SUPPORTED (0) #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 #if CONFIG_BT_LE_LL_CFG_FEAT_LE_CODED_PHY @@ -164,6 +174,8 @@ extern "C" { #define DEFAULT_BT_LE_HCI_UART_RTS_PIN (-1) #endif + #define DEFAULT_BT_ADV_SEND_CONSTANT_DID (0) + #define DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER (0) #endif #define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF diff --git a/components/bt/include/esp32c6/include/esp_bt.h b/components/bt/include/esp32c6/include/esp_bt.h index 9a171162dc..ccd91df5c0 100644 --- a/components/bt/include/esp32c6/include/esp_bt.h +++ b/components/bt/include/esp32c6/include/esp_bt.h @@ -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); -#define CONFIG_VERSION 0x20251125 +#define CONFIG_VERSION 0x20251211 #define CONFIG_MAGIC 0x5A5AA5A5 /** @@ -237,6 +237,7 @@ typedef struct { 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 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 */ } esp_bt_controller_config_t; @@ -304,6 +305,7 @@ typedef struct { .priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \ .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, \ + .scan_allow_adi_filter = DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER, \ .config_magic = CONFIG_MAGIC, \ } #elif CONFIG_IDF_TARGET_ESP32C61