blob: 981d1b8f1fc33e33a7bf02969b0b32ea718b6f54 [file] [log] [blame]
# Zephyr Bluetooth Controller configuration options
# Copyright (c) 2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
# BT_CTLR_DF_SUPPORT is a wrapper for all DF features. It is referenced by Host
# to enable its DF related Kconfigs when build together with the Controller.
# It is required to enable it when Controller supports any DF related feature
# but particular features are selected individually.
config BT_CTLR_DF_SUPPORT
bool
if BT_CTLR_DF_SUPPORT
config BT_CTLR_DF_CTE_TX_SUPPORT
bool
config BT_CTLR_DF_CTE_RX_SUPPORT
bool
config BT_CTLR_DF_CTE_RX_SAMPLE_1US_SUPPORT
bool
config BT_CTLR_DF_ANT_SWITCH_2US_SUPPORT
bool
config BT_CTLR_DF_ANT_SWITCH_1US_SUPPORT
bool
config BT_CTLR_CTEINLINE_SUPPORT
bool
endif # BT_CTLR_DF_SUPPORT
menuconfig BT_CTLR_DF
bool "LE Direction Finding"
depends on BT_CTLR_DF_CTE_TX_SUPPORT || BT_CTLR_DF_CTE_RX_SUPPORT
help
Enable support for Bluetooth 5.1 Direction Finding
if BT_CTLR_DF
# Basic controller functionalities required for implementation of
# Bluetooth v5.1 Direction Finding
config BT_CTLR_DF_CTE_TX
bool "Transmission of Constant Tone Extension"
depends on BT_CTLR_DF_CTE_TX_SUPPORT
default y
help
Enable support for transmission of Constant Tone Extension in
controller.
config BT_CTLR_DF_CTE_RX_SAMPLE_1US
bool "Reception of CTE with 1us sampling slots"
depends on BT_CTLR_DF_CTE_RX_SAMPLE_1US_SUPPORT
default y
help
Enable reception of Constant Tone Extension. Process IQ sampling
during CTE reception with 1us sampling slots.
This sampling mode is optional for Direction Finding according to
Bluetooth v5.1.
config BT_CTLR_DF_ANT_SWITCH_1US
bool "Support for 1us antenna switch slots"
depends on BT_CTLR_DF_ANT_SWITCH_1US_SUPPORT
default y
help
Enable support for 1us antenna switching slots. This antenna switching
mode is optional for Direction Finding according to Bluetooth v5.1.
# Features related with Direction Finding
# BT Core spec 5.1, Vol 6, Part B, sec. 4.6 Feature Support
config BT_CTLR_DF_ANT_SWITCH_TX
bool "Antenna switching during CTE transmission (AoD) feature"
depends on BT_CTLR_DF_CTE_TX && BT_CTLR_DF_ANT_SWITCH_2US_SUPPORT
default y
help
Enable support for antenna switching during CTE transmission.
Also known as Angle of Departure mode.
config BT_CTLR_DF_ANT_SWITCH_RX
bool "Antenna switching during CTE reception (AoA) feature"
depends on BT_CTLR_DF_CTE_RX && BT_CTLR_DF_ANT_SWITCH_2US_SUPPORT
default y
help
Enable support for antenna switching during CTE reception.
Also known as Angle of Arrival mode.
config BT_CTLR_DF_CTE_RX
bool "Reception of Constant Tone Extension feature"
depends on BT_CTLR_DF_CTE_RX_SUPPORT
select BT_CTLR_CONN_RSSI if BT_CONN
default y
help
Enable support for reception of Constant Tone Extension in controller.
config BT_CTLR_DF_CONN_CTE_REQ
bool "Connection CTE Request feature"
depends on BT_CTLR_DF_CONN_CTE_RX
help
Enable support for Bluetooth v5.1 Connection CTE Request feature
in controller.
config BT_CTLR_DF_CONN_CTE_RSP
bool "Connection CTE Response feature"
depends on BT_CTLR_DF_CONN_CTE_TX
help
Enable support for Bluetooth v5.1 Connection CTE Response feature
in controller.
config BT_CTLR_DF_ADV_CTE_TX
bool "Connectionless CTE Transmitter feature"
depends on BT_CTLR_DF_CTE_TX && BT_CTLR_ADV_PERIODIC
select BT_CTLR_ADV_EXT_PDU_EXTRA_DATA_MEMORY if BT_LL_SW_SPLIT
default y
help
Enable support for Bluetooth v5.1 Connectionless CTE Transmitter
feature in controller.
config BT_CTLR_DF_SCAN_CTE_RX
bool "Connectionless CTE Receiver"
depends on BT_CTLR_DF_CTE_RX && BT_CTLR_SYNC_PERIODIC
default y
help
Enable support for Bluetooth v5.1 connectionless CTE reception
in controller.
config BT_CTLR_DF_CONN_CTE_TX
bool "Connection based CTE Transmitter"
depends on BT_CTLR_DF_CTE_TX && BT_CONN
default y
help
Enable transmission of Constant Tone Extension in
direction finding connected mode.
config BT_CTLR_DF_CONN_CTE_RX
bool "Connection based CTE Receiver"
depends on BT_CTLR_DF_CTE_RX && BT_CONN
default y
help
Enable reception and sampling of Constant Tone Extension in direction
finding connected mode.
if BT_LL_SW_SPLIT
config BT_CTLR_DF_SAMPLE_CTE_FOR_PDU_WITH_BAD_CRC
bool "Sampling of CTE for PDUs with bad CRC"
depends on BT_CTLR_DF_SCAN_CTE_RX
default y
help
Enable support for sampling of CTE for PDUs that have bad CRC.
# Customization setting to manage memory usage footprint
config BT_CTLR_DF_MAX_ANT_SW_PATTERN_LEN
int "Maximum length of antenna switch pattern"
range 2 38 if SOC_COMPATIBLE_NRF
range 2 75 if !SOC_COMPATIBLE_NRF
default 12
help
Defines maximum length of antenna switch pattern that controller
is able to store. For nRF5x-based controllers, the hardware imposes
the value is within range 2 to 38, where last value is maximum.
For general use cases Bluetooth Core 5.1 spec. required the value
to be within range 2 up to 75.
config BT_CTLR_DF_INIT_ANT_SEL_GPIOS
bool "Initialization of GPIOs responsible for antenna switching"
depends on BT_CTLR_DF_ANT_SWITCH_TX || BT_CTLR_DF_ANT_SWITCH_RX
default y
help
Enable implicit initialization of GPIOs responsible for antenna
switching during Radio initialization.
If this feature is not enabled, the Radio initialization procedure will
not initialize GPIOs pins selected to drive antenna switching.
In such case application is responsible for appropriate GPIOs
initialization.
config BT_CTLR_DF_PER_ADV_CTE_NUM_MAX
int "Maximum number of transmitted PDUs with Constant Tone Extension in connectionless mode"
depends on BT_CTLR_DF_ADV_CTE_TX && BT_CTLR_ADV_PDU_LINK
range 1 16
default 1
help
Maximum supported number of PDUs, that have Constant Tone Extension, transmitted in single
periodic advertising chain. The range is taken from BT Core spec 5.1, Vol 4 Part E
section 7.8.82 HCI_LE_Set_Connectionless_IQ_Sampling_Enable Max_Sampled_CTEs parameter.
config BT_CTLR_DF_PER_SCAN_CTE_NUM_MAX
int "Maximum number of received PDUs with Constant Tone Extension in connectionless mode"
depends on BT_CTLR_DF_SCAN_CTE_RX
range 1 16
default 16
help
Maximum supported number of PDUs, that have Constant Tone Extension, received in single
periodic advertising chain. The range is taken from BT Core spec 5.1, Vol 4 Part E
section 7.8.82 HCI_LE_Set_Connectionless_IQ_Sampling_Enable Max_Sampled_CTEs parameter.
config BT_CTLR_DF_SWITCH_OFFSET
int "Antenna switch offset relative to end of CRC"
depends on SOC_COMPATIBLE_NRF
range -2048 2047
default 0
help
Offset of start of antenna switching after end of the CRC. It is a signed value in number
of 16M cycles. Decreasing the offset value beyond the trigger of the AoA/AoD procedure
will have no effect.
config BT_CTLR_DF_SAMPLE_OFFSET_PHY_1M_SAMPLING_1US
int "CTE sampling offset relative for PHY 1M and 1US samples spacing"
depends on SOC_COMPATIBLE_NRF
range -2048 2047
default 1
help
Offset of sampling start from beginning of sampling slot. The value is a signed number
of 16M cycles relative. It is used when PHY is set to PHY 1M and sampling slot duration
is 1 us. Decreasing the offset beyond the trigger of the AoA/AoD procedure will have
no effect.
config BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_1US
int "CTE sampling offset relative for PHY 1M and 1US samples spacing"
depends on SOC_COMPATIBLE_NRF
range -2048 2047
default 15
help
Offset of sampling start from beginning of sampling slot. The value is a signed number
of 16M cycles relative. It is used when PHY is set to PHY 1M and sampling slot duration
is 1 us. Decreasing the offset beyond the trigger of the AoA/AoD procedure will have
no effect.
config BT_CTLR_DF_SAMPLE_OFFSET_PHY_1M_SAMPLING_2US
int "CTE sampling offset relative for PHY 1M and 2US samples spacing"
depends on SOC_COMPATIBLE_NRF
range -2048 2047
default 6
help
Offset of sampling start from beginning of sampling slot. The value is a signed number
of 16M cycles relative. It is used when PHY is set to PHY 1M and sampling slot duration
is 2 us. Decreasing the offset beyond the trigger of the AoA/AoD procedure will have
no effect.
config BT_CTLR_DF_SAMPLE_OFFSET_PHY_2M_SAMPLING_2US
int "CTE sampling offset relative for PHY 1M and 2US samples spacing"
depends on SOC_COMPATIBLE_NRF
range -2048 2047
default 20
help
Offset of sampling start from beginning of sampling slot. The value is a signed number
of 16M cycles relative. It is used when PHY is set to PHY 1M and sampling slot duration
is 2 us. Decreasing the offset beyond the trigger of the AoA/AoD procedure will have
no effect.
config BT_CTLR_DF_DEBUG_ENABLE
bool "Bluetooth Direction Finding debug support enable"
help
This option enables debug support for the Direction Finding
implementation in controller.
config BT_CTLR_DF_PHYEND_OFFSET_COMPENSATION_ENABLE
bool
depends on BT_CTLR_DF_CTE_RX && BT_CONN && (SOC_NRF52811 || SOC_NRF52820 || SOC_NRF52833 || SOC_NRF5340_CPUNET)
default y
help
SOCs nRF52811, nRF52820, nRF52833, nRF5340 generate PHYEND event delayed when
CTEINLINECTRLEN is enabled and received PDU does not have CTEInfo field. The option
enables workaround for the delay to maintain inter frame spacing (IFS) for connection
events.
choice
prompt "IQ samples 12 bit to 8 bit conversion approach"
default BT_CTLR_DF_IQ_SAMPLES_CONVERT_2_BITS_SHIFT if !SOC_NRF5340_CPUNET
default BT_CTLR_DF_IQ_SAMPLES_CONVERT_USE_8_LSB if SOC_NRF5340_CPUNET
config BT_CTLR_DF_IQ_SAMPLES_CONVERT_4_BITS_SHIFT
bool "Conversion of IQ samples to 8 bits wide by 4 bits shift"
depends on BT_CTLR_DF_SCAN_CTE_RX || BT_CTLR_DF_CONN_CTE_RX
help
IQ samples provided by the Radio Direction Finding Extension are 12 bit wide. The
Bluetooth 5.3 Core Specification defines IQ samples to be 8 bits wide: Vol 4, Part E
sections 7.7.65.21 and 7.7.65.22. This config enables conversion of 12 bit IQ samples to
8 bits by ordinary right shift operation by 4 bits. That means there is loss in accuracy
since only the 8 MSB are used.
config BT_CTLR_DF_IQ_SAMPLES_CONVERT_2_BITS_SHIFT
bool "Conversion of IQ samples to 8 bits wide by 2 bits shift"
depends on BT_CTLR_DF_SCAN_CTE_RX || BT_CTLR_DF_CONN_CTE_RX
help
IQ samples provided by the Radio Direction Finding Extension are 12 bit wide. The
Bluetooth 5.3 Core Specification defines IQ samples to be 8 bits wide: Vol 4, Part E
sections 7.7.65.21 and 7.7.65.22. This config enables conversion of 12 bit IQ samples to
8 bits by ordinary right shift operation by 2 bits and a cast to int8_t. That means there
is a loss in accuracy. This conversion may be used only if you are sure samples will not
saturate.
config BT_CTLR_DF_IQ_SAMPLES_CONVERT_USE_8_LSB
bool "Conversion of IQ samples to 8 bits wide by use of 8 LSB"
depends on SOC_NRF5340_CPUNET && (BT_CTLR_DF_SCAN_CTE_RX || BT_CTLR_DF_CONN_CTE_RX)
help
IQ samples provided by the Radio Direction Finding Extension are 12 bit wide. The
Bluetooth 5.3 Core Specification defines IQ samples to be 8 bits wide: Vol 4, Part E
sections 7.7.65.21 and 7.7.65.22. This config enables conversion of 12 bit IQ samples to
8 bits by use of 8 least significant bits. This conversion may be used only if you are
sure actual samples are not greater than 8 bits. This prevents additional accuracy loss
due to shifting operation.
endchoice
# Vendor specifici extensions configuration
config BT_CTLR_DF_VS_CL_IQ_REPORT_16_BITS_IQ_SAMPLES
bool "Use 16 bits signed integer IQ samples in connectionless IQ reports"
depends on BT_CTLR_DF_SCAN_CTE_RX && BT_HCI_VS_EXT
select BT_HCI_VS_EVT
help
Direction Finging connectionless IQ reports provide a set of IQ samples collected during
sampling of CTE. Bluetooth 5.3 Core Specification defines IQ samples to be 8 bits signed
integer, see Vol 4, Part E section 7.7.65.21. This option enables a vendor specific
extenstion to HCI layer, so that connectionless IQ reports store samples in 16 bit signed
integer format.
config BT_CTLR_DF_VS_CONN_IQ_REPORT_16_BITS_IQ_SAMPLES
bool "Use 16 bits signed integer IQ samples in connection IQ reports"
depends on BT_CTLR_DF_CONN_CTE_RX && BT_HCI_VS_EXT
select BT_HCI_VS_EVT
help
Direction Finging connection IQ reports provide a set of IQ samples collected during
sampling of CTE. Bluetooth 5.3 Core Specification defines IQ samples to be 8 bits signed
integer, see Vol 4, Part E section 7.7.65.22. This option enables a vendor specific
extenstion to HCI layer, so that connection IQ reports store samples in 16 bit signed
integer format.
endif # BT_LL_SW_SPLIT
endif # BT_CTLR_DF