# Kconfig - Bluetooth Controller configuration options # # Copyright (c) 2016-2017 Nordic Semiconductor ASA # # SPDX-License-Identifier: Apache-2.0 # comment "BLE Controller support" config BLUETOOTH_CONTROLLER bool "Bluetooth Controller" select BLUETOOTH_RECV_IS_RX_THREAD help Enables support for SoC native controller implementations. if BLUETOOTH_CONTROLLER choice prompt "Bluetooth Link Layer Selection" default BLUETOOTH_LL_SW help Select the Bluetooth Link Layer to compile. config BLUETOOTH_LL_SW bool "Use the software-based BLE Link Layer" help Use Zephyr's software BLE Link Layer implementation. endchoice comment "BLE Controller configuration" config BLUETOOTH_CONTROLLER_DUP_FILTER_LEN prompt "Number of addresses in the scan duplicate filter" int default 16 help Set the number of unique BLE addresses that can be filtered as duplicates while scanning. config BLUETOOTH_CONTROLLER_RX_BUFFERS prompt "Number of Rx buffers" int default 1 default 6 if BLUETOOTH_HCI_RAW range 1 10 help Set the number of Rx PDUs to be buffered in the controller. config BLUETOOTH_CONTROLLER_TX_BUFFERS prompt "Number of Tx buffers" int default 2 default 7 if BLUETOOTH_HCI_RAW range 1 10 help Set the number of Tx PDUs to be queued for transmission in the controller. config BLUETOOTH_CONTROLLER_TX_BUFFER_SIZE prompt "Tx buffer size" int range 27 16384 default 27 help Size of the Tx buffers and the value returned in HCI LE Read Buffer Size command response. If this size if greater than effective PDU size then controller will perform fragmentation before transmitting on the the packet on air. Maximum is set to 16384 due to implementation limitations (use of uint16_t for size/length variables). config BLUETOOTH_CONTROLLER_COMPANY_ID prompt "Company Id" hex default 0xFFFF range 0x0000 0xFFFF help Set the Company Id that will be used in VERSION_IND PDU. config BLUETOOTH_CONTROLLER_SUBVERSION_NUMBER prompt "Subversion Number" hex default 0xFFFF range 0x0000 0xFFFF help Set the Subversion Number that will be used in VERSION_IND PDU. config BLUETOOTH_CONTROLLER_RX_PRIO_STACK_SIZE int default 320 comment "BLE Controller features" config BLUETOOTH_CONTROLLER_LE_PING bool "LE Ping" default y help Enable support for Bluetooth v4.1 LE Ping feature in the Controller. config BLUETOOTH_CONTROLLER_DATA_LENGTH bool "Data Length Update" default y help Enable support for Bluetooth v4.2 LE Data Length Update procedure in the Controller. config BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX prompt "Maximum data length supported" depends on BLUETOOTH_CONTROLLER_DATA_LENGTH int default 27 range 27 251 help Set the maximum data length of PDU supported in the Controller. config BLUETOOTH_CONTROLLER_ADVANCED_FEATURES bool "Show advanced features" help Makes advanced features visible to controller developers. menu "Advanced features" visible if BLUETOOTH_CONTROLLER_ADVANCED_FEATURES config BLUETOOTH_CONTROLLER_WORKER_PRIO prompt "Radio and Ticker's Worker IRQ priority" int range 0 3 if SOC_SERIES_NRF51X range 0 6 if SOC_SERIES_NRF52X default 0 help The interrupt priority for event preparation and radio IRQ. This value shall be less than or equal to the Ticker's Job priority value. config BLUETOOTH_CONTROLLER_JOB_PRIO prompt "Ticker's JOB IRQ priority" int range BLUETOOTH_CONTROLLER_WORKER_PRIO 3 if SOC_SERIES_NRF51X range BLUETOOTH_CONTROLLER_WORKER_PRIO 6 if SOC_SERIES_NRF52X default 0 help The interrupt priority for Ticker's Job (SWI4) IRQ. This value shall be greater than or equal to the Ticker's Worker IRQ priority value. config BLUETOOTH_CONTROLLER_XTAL_ADVANCED bool "Advanced event preparation" default y help Enables advanced event preparation offset ahead of radio tx/rx, taking into account predictive processing time requirements in preparation to the event, like control procedure handling and CPU execution speeds. Crystal oscillator is retained between closely spaced consecutive radio events to reduce the overall number of crystal settling current consumptions. This feature maximizes radio utilization in an average role event timeslice when they are closely spaced by using a reduced offset between preparation and radio event. By disabling this feature, the controller will use a constant offset between the preparation and radio event. The controller will toggle crystal oscillator between two closely spaced radio events leading to higher average current due to increased number of crystal settling current consumptions. config BLUETOOTH_CONTROLLER_XTAL_THRESHOLD prompt "Crystal shutdown threshold in uS" depends on BLUETOOTH_CONTROLLER_XTAL_ADVANCED int default 5168 help Configure the optimal delta in micro seconds between two consecutive radio events below which (active clock) crystal will be retained. This value is board dependent. The value 5168 is based on crude calculation for nRF51 current versus startup time of high frequency crystal. config BLUETOOTH_CONTROLLER_SCHED_ADVANCED bool "Advanced scheduling" depends on (BLUETOOTH_MAX_CONN != 0) default y default n if BLUETOOTH_PERIPHERAL && !BLUETOOTH_CENTRAL help Enable non-overlapping placement of observer, initiator and master roles in timespace. Uses window offset in connection updates and uses connection parameter request in slave role to negotiate non-overlapping placement with active master roles to avoid slave roles drifting into active master roles in the local controller. This feature maximizes the average data transmission amongst active concurrent master and slave connections while other observer, initiator, master or slave roles are active in the local controller. Disabling this feature will lead to overlapping role in timespace leading to skipped events amongst active roles. config BLUETOOTH_CONTROLLER_FAST_ENC bool "Fast Encryption Setup" help Enable connection encryption setup in 3 connection intervals. Peripheral will respond to Encryption Request with Encryption Response in the same connection interval, and also, will respond with Start Encryption Response PDU in the 3rd connection interval, hence completing encryption setup in 3 connection intervals. Encrypted data would be transmitted as fast as in 3rd connection interval from the connection establishment. Maximum CPU time in Radio ISR will increase if this feature is selected. config BLUETOOTH_CONTROLLER_CONN_RSSI bool "Connection RSSI" help Enable connection RSSI measurement. config BLUETOOTH_CONTROLLER_ADV_INDICATION bool "Advertisement indications" help Generate events indicating on air advertisement events. endmenu comment "BLE Controller debug configuration" config BLUETOOTH_CONTROLLER_ASSERT_HANDLER bool "Bluetooth Controller Assertion Handler" depends on BLUETOOTH_HCI_RAW help This option enables an application-defined sink for the controller assertion mechanism. This must be defined in application code as void \"bt_controller_assert_handle(char \*, int)\" and will be invoked whenever the controller code encounters an unrecoverable error. config BLUETOOTH_CONTROLLER_PROFILE_ISR bool "Profile radio ISR" help Turn on measurement of radio ISR latency, CPU usage and generation of controller event with these profiling data. The controller event contains current, minimum and maximum ISR entry latencies; and current, minimum and maximum ISR CPU use in micro-seconds. config BLUETOOTH_CONTROLLER_DEBUG_PINS bool "Bluetooth Controller Debug Pins" help Turn on debug GPIO toggling for the BLE Controller. This is useful when debugging with a logic analyzer or profiling certain sections of the code. When enabled, pins P0.16 to P0.25 are taken over exclusively by the controller and cannot be used outside of it. endif # BLUETOOTH_CONTROLLER