Bluetooth: controller: Add initial ULL Periodic Sync code

Add initial files and code for Periodic Sync feature support.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2020-07-20 12:55:26 +05:30 committed by Carles Cufí
commit b0cc96ec61
7 changed files with 80 additions and 2 deletions

View file

@ -43,6 +43,10 @@ if(CONFIG_BT_LL_SW_SPLIT)
CONFIG_BT_CTLR_ADV_EXT
ll_sw/ull_scan_aux.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_SCAN_PERIODIC
ll_sw/ull_scan_sync.c
)
endif()
if(CONFIG_BT_CONN)
zephyr_library_sources(
@ -64,7 +68,9 @@ if(CONFIG_BT_LL_SW_SPLIT)
)
endif()
endif()
if(CONFIG_BT_CONN OR CONFIG_BT_CTLR_ADV_PERIODIC)
if(CONFIG_BT_CONN OR
CONFIG_BT_CTLR_ADV_PERIODIC OR
CONFIG_BT_CTLR_SCAN_PERIODIC)
zephyr_library_sources(
ll_sw/ull_chan.c
ll_sw/lll_chan.c

View file

@ -45,6 +45,10 @@ config BT_CTLR_ADV_PERIODIC_SUPPORT
depends on BT_CTLR_ADV_EXT_SUPPORT
bool
config BT_CTLR_SCAN_PERIODIC_SUPPORT
depends on BT_CTLR_ADV_EXT_SUPPORT
bool
config BT_CTLR_CHAN_SEL_2_SUPPORT
bool
@ -371,7 +375,7 @@ config BT_CTLR_PHY_CODED
config BT_CTLR_CHAN_SEL_2
bool "Channel Selection Algorithm #2"
depends on (BT_CONN || BT_CTLR_ADV_PERIODIC) && BT_CTLR_CHAN_SEL_2_SUPPORT
depends on (BT_CONN || BT_CTLR_ADV_PERIODIC || BT_CTLR_SCAN_PERIODIC) && BT_CTLR_CHAN_SEL_2_SUPPORT
default y
help
Enable support for Bluetooth 5.0 LE Channel Selection Algorithm #2 in
@ -409,6 +413,15 @@ config BT_CTLR_ADV_PERIODIC
Enable support for Bluetooth 5.0 LE Periodic Advertising in the
Controller.
config BT_CTLR_SCAN_PERIODIC
bool "LE Periodic Advertising Sync"
depends on BT_OBSERVER && BT_CTLR_SCAN_PERIODIC_SUPPORT
select BT_CTLR_CHAN_SEL_2
default y if BT_PER_ADV_SYNC
help
Enable support for Bluetooth 5.0 LE Periodic Advertising Sync in the
Controller.
config BT_CTLR_ADV_DATA_LEN_MAX
int "Maximum Advertising Data Length"
range 31 1650

View file

@ -28,6 +28,7 @@ config BT_LLL_VENDOR_NORDIC
BT_CTLR_PHY_CODED_SUPPORT
select BT_CTLR_ADV_EXT_SUPPORT
select BT_CTLR_ADV_PERIODIC_SUPPORT
select BT_CTLR_SCAN_PERIODIC_SUPPORT
select BT_CTLR_CHAN_SEL_2_SUPPORT
select BT_CTLR_MIN_USED_CHAN_SUPPORT
select BT_CTLR_DTM_HCI_SUPPORT

View file

@ -94,9 +94,21 @@ uint8_t ll_adv_enable(uint8_t handle, uint8_t enable,
uint8_t ll_adv_enable(uint8_t enable);
#endif /* !CONFIG_BT_CTLR_ADV_EXT || !CONFIG_BT_HCI_MESH_EXT */
#if defined(CONFIG_BT_CTLR_ADV_EXT)
uint8_t ll_scan_params_set(uint8_t type, uint16_t interval, uint16_t window,
uint8_t own_addr_type, uint8_t filter_policy);
uint8_t ll_scan_enable(uint8_t enable);
uint8_t ll_scan_sync_create(uint8_t options, uint8_t sid, uint8_t adv_addr_type,
uint8_t *adv_addr, uint16_t skip,
uint16_t sync_timeout, uint8_t sync_cte_type);
uint8_t ll_scan_sync_create_cancel(void);
uint8_t ll_scan_sync_terminate(uint16_t handle);
uint8_t ll_scan_sync_recv_enable(uint16_t handle, uint8_t enable);
#else /* !CONFIG_BT_CTLR_ADV_EXT */
uint8_t ll_scan_params_set(uint8_t type, uint16_t interval, uint16_t window,
uint8_t own_addr_type, uint8_t filter_policy);
uint8_t ll_scan_enable(uint8_t enable);
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
uint8_t ll_wl_size_get(void);
uint8_t ll_wl_clear(void);

View file

@ -107,6 +107,13 @@
#define LL_FEAT_BIT_EXT_ADV 0
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
#if defined(CONFIG_BT_CTLR_ADV_PERIODIC) || \
defined(CONFIG_BT_CTLR_SCAN_PERIODIC)
#define LL_FEAT_BIT_PER_ADV BIT64(BT_LE_FEAT_BIT_PER_ADV)
#else /* !CONFIG_BT_CTLR_ADV_PERIODIC && !CONFIG_BT_CTLR_SCAN_PERIODIC */
#define LL_FEAT_BIT_PER_ADV 0
#endif /* !CONFIG_BT_CTLR_ADV_PERIODIC && !CONFIG_BT_CTLR_SCAN_PERIODIC */
#define LL_FEAT_BIT_MASK 0x1FFFF
#define LL_FEAT_BIT_MASK_VALID 0x1CF2F
#define LL_FEAT_FILTER_OCTET0 0x1FF00
@ -123,5 +130,6 @@
LL_FEAT_BIT_SMI_RX | \
LL_FEAT_BIT_PHY_CODED | \
LL_FEAT_BIT_EXT_ADV | \
LL_FEAT_BIT_PER_ADV | \
LL_FEAT_BIT_CHAN_SEL_2 | \
LL_FEAT_BIT_MIN_USED_CHAN)

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdint.h>
#include <bluetooth/hci.h>
uint8_t ll_scan_sync_create(uint8_t options, uint8_t sid, uint8_t adv_addr_type,
uint8_t *adv_addr, uint16_t skip,
uint16_t sync_timeout, uint8_t sync_cte_type)
{
/* TODO: */
return BT_HCI_ERR_CMD_DISALLOWED;
}
uint8_t ll_scan_sync_create_cancel(void)
{
/* TODO: */
return BT_HCI_ERR_CMD_DISALLOWED;
}
uint8_t ll_scan_sync_terminate(uint16_t handle)
{
/* TODO: */
return BT_HCI_ERR_CMD_DISALLOWED;
}
uint8_t ll_scan_sync_recv_enable(uint16_t handle, uint8_t enable)
{
/* TODO: */
return BT_HCI_ERR_CMD_DISALLOWED;
}

View file

@ -5,6 +5,9 @@ CONFIG_BT_PERIPHERAL=y
CONFIG_BT_OBSERVER=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_EXT_ADV=y
CONFIG_BT_PER_ADV=y
CONFIG_BT_PER_ADV_SYNC=y
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_SCAN_PERIODIC=y