Skip to content

Commit

Permalink
Merge branch 'feature/add_config_to_set_duplicate_scan_list_refresh_t…
Browse files Browse the repository at this point in the history
…ime_on_esp32' into 'master'

Add config to set duplicate scan list refresh period on ESP32

Closes BT-3023

See merge request espressif/esp-idf!21618
  • Loading branch information
jack0c committed Dec 19, 2022
2 parents 1ff8a68 + 9ac7b16 commit af9dcc4
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 4 deletions.
16 changes: 16 additions & 0 deletions components/bt/controller/esp32/Kconfig.in
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,22 @@ config BTDM_SCAN_DUPL_CACHE_SIZE
Maximum number of devices which can be recorded in scan duplicate filter.
When the maximum amount of device in the filter is reached, the cache will be refreshed.

config BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD
int "Duplicate scan list refresh period (seconds)"
depends on BTDM_BLE_SCAN_DUPL
range 0 1000
default 0
help
If the period value is non-zero, the controller will periodically clear the device information
stored in the scan duuplicate filter. If it is 0, the scan duuplicate filter will not be cleared
until the scanning is disabled. Duplicate advertisements for this period should not be sent to the
Host in advertising report events.
There are two scenarios where the ADV packet will be repeatedly reported:
1. The duplicate scan cache is full, the controller will delete the oldest device information and
add new device information.
2. When the refresh period is up, the controller will clear all device information and start filtering
again.

config BTDM_BLE_MESH_SCAN_DUPL_EN
bool "Special duplicate scan mechanism for BLE Mesh scan"
depends on BTDM_BLE_SCAN_DUPL
Expand Down
2 changes: 1 addition & 1 deletion components/bt/controller/esp32c3/Kconfig.in
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ config BT_CTRL_SCAN_DUPL_CACHE_SIZE
When the maximum amount of device in the filter is reached, the cache will be refreshed.

config BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD
int "Duplicate scan list refresh period"
int "Duplicate scan list refresh period (seconds)"
depends on BT_CTRL_BLE_SCAN_DUPL
range 0 1000
default 0
Expand Down
2 changes: 1 addition & 1 deletion components/bt/controller/esp32s3/Kconfig.in
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ config BT_CTRL_SCAN_DUPL_CACHE_SIZE
When the maximum amount of device in the filter is reached, the cache will be refreshed.

config BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD
int "Duplicate scan list refresh period"
int "Duplicate scan list refresh period (seconds)"
depends on BT_CTRL_BLE_SCAN_DUPL
range 0 1000
default 0
Expand Down
2 changes: 1 addition & 1 deletion components/bt/controller/lib_esp32
10 changes: 9 additions & 1 deletion components/bt/include/esp32/include/esp_bt.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ extern "C" {

#endif //CONFIG_BT_ENABLED

#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL 0x20200622
#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL 0x20221207

/**
* @brief Bluetooth mode for controller enable/disable
Expand Down Expand Up @@ -128,6 +128,12 @@ the adv packet will be discarded until the memory is restored. */
#define MESH_DUPLICATE_SCAN_CACHE_SIZE 0
#endif

#ifdef CONFIG_BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD
#define SCAN_DUPL_CACHE_REFRESH_PERIOD CONFIG_BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD
#else
#define SCAN_DUPL_CACHE_REFRESH_PERIOD 0
#endif

#if defined(CONFIG_BTDM_CTRL_MODE_BLE_ONLY)
#define BTDM_CONTROLLER_MODE_EFF ESP_BT_MODE_BLE
#elif defined(CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY)
Expand Down Expand Up @@ -183,6 +189,7 @@ the adv packet will be discarded until the memory is restored. */
.pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_EFF, \
.pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_EFF, \
.hli = BTDM_CTRL_HLI, \
.dup_list_refresh_period = SCAN_DUPL_CACHE_REFRESH_PERIOD, \
.magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL, \
}

Expand Down Expand Up @@ -225,6 +232,7 @@ typedef struct {
uint8_t pcm_role; /*!< PCM role (master & slave)*/
uint8_t pcm_polar; /*!< PCM polar trig (falling clk edge & rising clk edge) */
bool hli; /*!< Using high level interrupt or not */
uint16_t dup_list_refresh_period; /*!< Duplicate scan list refresh period */
uint32_t magic; /*!< Magic number */
} esp_bt_controller_config_t;

Expand Down

0 comments on commit af9dcc4

Please sign in to comment.