samples: Bluetooth: df: Enable TX of mutliple CTEs in a per adv event

Since periodic advertising chains are available there is
a possibility to send multiple PDUs including CTE in
a periodic advertising event.

This commit enables such functionality in direction finding
transmitter sample.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
This commit is contained in:
Piotr Pryga 2021-08-26 12:55:24 +02:00 committed by Anas Nashif
commit 50a2cdd75a
4 changed files with 22 additions and 10 deletions

View file

@ -8,3 +8,8 @@ CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_DF=y CONFIG_BT_CTLR_DF=y
CONFIG_BT_CTLR_DF_ANT_SWITCH_RX=n CONFIG_BT_CTLR_DF_ANT_SWITCH_RX=n
CONFIG_BT_CTLR_DF_SCAN_CTE_RX=n CONFIG_BT_CTLR_DF_SCAN_CTE_RX=n
# Enable chaining of multiple CTEs in periodic advertising
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_ADV_SYNC_PDU_BACK2BACK=y
CONFIG_BT_CTLR_DF_PER_ADV_CTE_NUM_MAX=16

View file

@ -8,3 +8,8 @@ CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_DF=y CONFIG_BT_CTLR_DF=y
CONFIG_BT_CTLR_DF_ANT_SWITCH_RX=n CONFIG_BT_CTLR_DF_ANT_SWITCH_RX=n
CONFIG_BT_CTLR_DF_SCAN_CTE_RX=n CONFIG_BT_CTLR_DF_SCAN_CTE_RX=n
# Enable chaining of multiple CTEs in periodic advertising
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_ADV_SYNC_PDU_BACK2BACK=y
CONFIG_BT_CTLR_DF_PER_ADV_CTE_NUM_MAX=16

View file

@ -3,6 +3,7 @@ CONFIG_BT_DEVICE_NAME="DF Connectionless Beacon App"
CONFIG_BT_EXT_ADV=y CONFIG_BT_EXT_ADV=y
CONFIG_BT_PER_ADV=y CONFIG_BT_PER_ADV=y
CONFIG_BT_BROADCASTER=y
# Enable Direction Finding Feature including AoA and AoD # Enable Direction Finding Feature including AoA and AoD
CONFIG_BT_DF=y CONFIG_BT_DF=y

View file

@ -18,6 +18,8 @@
/* Length of CTE in unit of 8[us] */ /* Length of CTE in unit of 8[us] */
#define CTE_LEN (0x14U) #define CTE_LEN (0x14U)
/* Number of CTE send in single periodic advertising train */
#define PER_ADV_EVENT_CTE_COUNT 5
static void adv_sent_cb(struct bt_le_ext_adv *adv, static void adv_sent_cb(struct bt_le_ext_adv *adv,
struct bt_le_ext_adv_sent_info *info); struct bt_le_ext_adv_sent_info *info);
@ -50,19 +52,18 @@ static struct bt_le_per_adv_param per_adv_param = {
static uint8_t ant_patterns[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA }; static uint8_t ant_patterns[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA };
#endif /* CONFIG_BT_CTLR_DF_ANT_SWITCH_TX */ #endif /* CONFIG_BT_CTLR_DF_ANT_SWITCH_TX */
struct bt_df_adv_cte_tx_param cte_params = { struct bt_df_adv_cte_tx_param cte_params = { .cte_len = CTE_LEN,
.cte_len = CTE_LEN, .cte_count = PER_ADV_EVENT_CTE_COUNT,
.cte_count = 1,
#if defined(CONFIG_BT_CTLR_DF_ANT_SWITCH_TX) #if defined(CONFIG_BT_CTLR_DF_ANT_SWITCH_TX)
.cte_type = BT_HCI_LE_AOD_CTE_2US, .cte_type = BT_HCI_LE_AOD_CTE_2US,
.num_ant_ids = ARRAY_SIZE(ant_patterns), .num_ant_ids = ARRAY_SIZE(ant_patterns),
.ant_ids = ant_patterns .ant_ids = ant_patterns
#else #else
.cte_type = BT_HCI_LE_AOA_CTE, .cte_type = BT_HCI_LE_AOA_CTE,
.num_ant_ids = 0, .num_ant_ids = 0,
.ant_ids = NULL .ant_ids = NULL
#endif /* CONFIG_BT_CTLR_DF_ANT_SWITCH_TX */ #endif /* CONFIG_BT_CTLR_DF_ANT_SWITCH_TX */
}; };
static void adv_sent_cb(struct bt_le_ext_adv *adv, static void adv_sent_cb(struct bt_le_ext_adv *adv,
struct bt_le_ext_adv_sent_info *info) struct bt_le_ext_adv_sent_info *info)