Bluetooth: Controller: Add Kconfig for experimental AD Data Chaining

Add a Kconfig for Advertising Data Chaining in Extended and
Periodic Advertising, permitting AD data lengths of upto
1650 bytes. The implementation is experimental and needs
further testing.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2022-09-03 07:27:11 +05:30 committed by Carles Cufí
commit b304eaa29b
3 changed files with 21 additions and 2 deletions

View file

@ -536,7 +536,7 @@ config BT_CTLR_ADV_INTERVAL_MAX
config BT_CTLR_ADV_DATA_LEN_MAX config BT_CTLR_ADV_DATA_LEN_MAX
int "Maximum Advertising Data Length" int "Maximum Advertising Data Length"
depends on BT_BROADCASTER depends on BT_BROADCASTER
range 31 191 if BT_LL_SW_SPLIT range 31 191 if BT_LL_SW_SPLIT && !BT_CTLR_ADV_DATA_CHAIN
range 31 1650 range 31 1650
help help
Maximum Extended Advertising Data Length. Maximum Extended Advertising Data Length.

View file

@ -189,6 +189,22 @@ config BT_CTLR_ADV_SYNC_SET
help help
Maximum supported periodic advertising sets. Maximum supported periodic advertising sets.
config BT_CTLR_ADV_DATA_CHAIN
bool "Advertising Data chaining [EXPERIMENTAL]"
select EXPERIMENTAL
help
Enable support for Advertising Data chaining in Extended and
Periodic Advertising. This will allow to have Advertising Data Length
upto 1650 bytes.
This is experimental and work in progress, does not implement
recombining the AD Data and could return BT_HCI_ERR_PACKET_TOO_LONG
when a chain PDU needs its AD data overflow into a new chain PDU.
I.e. AD data in the last PDU could overflow due to the need to add
Aux Pointer field, and if this overflow bytes plus the next AD data
fragment length could be over 255 bytes needing additional chain PDU.
This is not implemented.
config BT_CTLR_ADV_PDU_LINK config BT_CTLR_ADV_PDU_LINK
# Enables extra space in each advertising PDU to allow linking PDUs. # Enables extra space in each advertising PDU to allow linking PDUs.
# This is required to enable advertising data trains (i.e. transmission # This is required to enable advertising data trains (i.e. transmission

View file

@ -5,6 +5,10 @@ CONFIG_BT_EXT_ADV=y
CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 CONFIG_BT_EXT_ADV_MAX_ADV_SET=2
CONFIG_BT_DEVICE_NAME="Broadcaster Multiple" CONFIG_BT_DEVICE_NAME="Broadcaster Multiple"
# Enable Advertising Data chaining in Zephyr Bluetooth LE Controller
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_ADV_DATA_CHAIN=y
# Zephyr Bluetooth LE Controller will need to use chain PDUs when AD data # Zephyr Bluetooth LE Controller will need to use chain PDUs when AD data
# length > 191 bytes # length > 191 bytes
# - 31 bytes will use 22 bytes for the default name in this sample plus 9 bytes # - 31 bytes will use 22 bytes for the default name in this sample plus 9 bytes
@ -18,7 +22,6 @@ CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=1650
# Increase Advertising PDU buffers to number of advertising sets times the # Increase Advertising PDU buffers to number of advertising sets times the
# number of chain PDUs per advertising set when using Zephyr Bluetooth LE # number of chain PDUs per advertising set when using Zephyr Bluetooth LE
# Controller # Controller
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=2 CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=2
# Maximum Extended Scanning buffer size # Maximum Extended Scanning buffer size