Make the intent of the value clear and avoid invalid ranges with typos. Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
337 lines
12 KiB
Text
337 lines
12 KiB
Text
# Bluetooth common configuration options
|
|
|
|
# Copyright (c) 2017 Nordic Semiconductor ASA
|
|
# Copyright (c) 2016 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menu "Bluetooth buffer configuration"
|
|
|
|
config BT_BUF_ACL_TX_SIZE
|
|
int "Maximum supported ACL size for outgoing data"
|
|
range 27 $(UINT16_MAX)
|
|
default 37 if BT_MESH_GATT
|
|
default 27
|
|
help
|
|
Maximum supported ACL size of data packets sent from the Host to the
|
|
Controller. This value does not include the HCI ACL header.
|
|
|
|
In a combined build this value will be set in both the Host and the
|
|
Controller.
|
|
|
|
In a Host-only build the Host will read the maximum ACL size supported
|
|
by the Controller and use the smallest value supported by both the
|
|
Host and the Controller.
|
|
|
|
The Host supports sending of larger L2CAP PDUs than the ACL size and
|
|
will fragment L2CAP PDUs into ACL data packets.
|
|
The Controller will return this value in the HCI LE Read Buffer
|
|
Size command response. If this size if greater than effective Link
|
|
Layer transmission size then the Controller will perform
|
|
fragmentation before transmitting the packet(s) on air.
|
|
If this value is less than the effective Link Layer transmission size
|
|
then this will restrict the maximum Link Layer transmission size.
|
|
|
|
config BT_BUF_ACL_TX_COUNT
|
|
int "Number of outgoing ACL data buffers"
|
|
default 7 if BT_HCI_RAW
|
|
default 4 if BT_MESH_GATT
|
|
default 3
|
|
range 1 $(UINT8_MAX)
|
|
help
|
|
Number of outgoing ACL data buffers sent from the Host to the
|
|
Controller. This determines the maximum amount of data packets the
|
|
Host can have queued in the Controller before waiting for the
|
|
to notify the Host that more packets can be queued with the Number of
|
|
Completed Packets event.
|
|
The buffers are shared between all of the connections and the Host
|
|
determines how to divide the buffers between the connections.
|
|
The Controller will return this value in the HCI LE Read Buffer Size
|
|
command response.
|
|
|
|
config BT_BUF_ACL_RX_SIZE
|
|
int "Maximum supported ACL size for incoming data"
|
|
default 200 if BT_CLASSIC
|
|
default 70 if BT_EATT
|
|
default 69 if BT_SMP
|
|
default 37 if BT_MESH_GATT
|
|
default 27
|
|
range 70 $(UINT16_MAX) if BT_EATT
|
|
range 69 $(UINT16_MAX) if BT_SMP
|
|
range 27 $(UINT16_MAX)
|
|
help
|
|
Maximum support ACL size of data packets sent from the Controller to
|
|
the Host. This value does not include the HCI ACL header.
|
|
|
|
In a combined Host and Controller build, both the
|
|
Host and the Controller will use this value for buffer sizes, making
|
|
Controller to Host flow control not strictly necessary.
|
|
|
|
In a Host only build with Controller to Host flow control enabled
|
|
the Host will inform the Controller about the maximum ACL data size it
|
|
can send by setting this value in the Host Buffer Size command.
|
|
|
|
If Controller to Host flow control is not enabled then the Controller
|
|
can assume the Host has to receive and process ACL data faster than
|
|
the controller can produce it.
|
|
|
|
In a Controller only build this will determine the maximum ACL size
|
|
that the Controller will send to the Host.
|
|
|
|
config BT_BUF_ACL_RX_COUNT
|
|
int "Number of incoming ACL data buffers"
|
|
default 6
|
|
range 2 256
|
|
help
|
|
Number or incoming ACL data buffers sent from the Controller to the
|
|
Host.
|
|
In a combined Host and Controller build the buffers are shared and
|
|
therefore Controller to Host flow control is not needed.
|
|
|
|
In a Host only build with Controller to Host flow control enabled
|
|
the Host will inform the Controller about the maximum number of
|
|
buffers by setting this value in the Host Buffer Size command.
|
|
|
|
When Controller to Host flow control is not enabled the Controller
|
|
can assume that the Host has infinite amount of buffers.
|
|
|
|
For both configurations, there is an additional requirement that is
|
|
enforced by a build-time check: BT_BUF_ACL_RX_COUNT needs to be at
|
|
least one greater than BT_MAX_CONN.
|
|
|
|
config BT_BUF_EVT_RX_SIZE
|
|
int "Maximum supported HCI Event buffer length"
|
|
default $(UINT8_MAX) if (BT_EXT_ADV && BT_OBSERVER) || BT_PER_ADV_SYNC || BT_DF_CONNECTION_CTE_RX || BT_CLASSIC
|
|
# LE Read Supported Commands command complete event.
|
|
default 68
|
|
range 68 $(UINT8_MAX)
|
|
help
|
|
Maximum supported HCI event buffer size. This value does not include
|
|
the HCI Event header.
|
|
This value is used by both the Host and the Controller for buffer
|
|
sizes that include HCI events. It should be set according to the
|
|
expected HCI events that can be generated from the configuration.
|
|
If the subset of possible HCI events is unknown, this should be set to
|
|
the maximum of 255.
|
|
|
|
config BT_BUF_EVT_RX_COUNT
|
|
int "Number of HCI Event buffers"
|
|
default 20 if (BT_MESH && !(BT_BUF_EVT_DISCARDABLE_COUNT > 0))
|
|
default 10
|
|
range 2 $(UINT8_MAX)
|
|
help
|
|
Number of buffers available for incoming HCI events from the
|
|
Controller.
|
|
|
|
config BT_BUF_EVT_DISCARDABLE_SIZE
|
|
int "Maximum supported discardable HCI Event buffer length"
|
|
range 43 $(UINT8_MAX) if !BT_EXT_ADV
|
|
range 58 $(UINT8_MAX) if BT_EXT_ADV
|
|
# LE Extended Advertising Report event
|
|
default $(UINT8_MAX) if BT_CLASSIC
|
|
# Le Advertising Report event
|
|
default 43 if !BT_EXT_ADV
|
|
default 58 if BT_EXT_ADV
|
|
help
|
|
Maximum support discardable HCI event size of buffers in the separate
|
|
discardable event buffer pool. This value does not include the
|
|
HCI Event header.
|
|
The minimum size is set based on the Advertising Report. Setting
|
|
the buffer size different than BT_BUF_EVT_RX_SIZE can save memory.
|
|
|
|
config BT_BUF_EVT_DISCARDABLE_COUNT
|
|
int "Number of discardable HCI Event buffers"
|
|
range 1 $(UINT8_MAX)
|
|
default 20 if BT_MESH
|
|
default 3
|
|
depends on !BT_HCI_RAW
|
|
help
|
|
Number of buffers in a separate buffer pool for events which
|
|
the HCI driver considers discardable. Examples of such events
|
|
could be e.g. Advertising Reports. The benefit of having such
|
|
a pool is that the if there is a heavy inflow of such events
|
|
it will not cause the allocation for other critical events to
|
|
block and may even eliminate deadlocks in some cases.
|
|
|
|
config BT_BUF_CMD_TX_SIZE
|
|
int "Maximum support HCI Command buffer length"
|
|
default $(UINT8_MAX) if (BT_EXT_ADV || BT_CLASSIC || BT_ISO_CENTRAL)
|
|
# LE Set Connection CTE Receive Parameters. Value required to store max allowed number
|
|
# of antenna ids for platforms other than Nordic.
|
|
default 83 if (!BT_EXT_ADV && !BT_CLASSIC && BT_CTLR_DF && BT_CTLR_DF_CONN_CTE_REQ && !SOC_COMPATIBLE_NRF)
|
|
# LE Generate DHKey v2 command
|
|
default 65
|
|
range 65 $(UINT8_MAX)
|
|
help
|
|
Maximum data size for each HCI Command buffer. This value does not
|
|
include the HCI Command header.
|
|
This value is used by both the Host and the Controller for buffer
|
|
sizes that include HCI commands. It should be set according to the
|
|
expected HCI commands that can be sent from the configuration.
|
|
If the subset of possible HCI commands is unknown, this should be set
|
|
to the maximum of 255.
|
|
|
|
config BT_BUF_CMD_TX_COUNT
|
|
int "Number of HCI command buffers"
|
|
default 2
|
|
range 2 64
|
|
help
|
|
Number of buffers available for outgoing HCI commands from the Host.
|
|
|
|
endmenu
|
|
|
|
# Workaround to have commas on function arguments
|
|
ZEPHYR_BT_HCI := zephyr,bt-hci
|
|
|
|
config BT_HAS_HCI_VS
|
|
bool
|
|
default $(dt_chosen_bool_prop,$(ZEPHYR_BT_HCI),bt-hci-vs-ext)
|
|
help
|
|
This option is set by the Bluetooth controller to indicate support
|
|
for the Zephyr HCI Vendor-Specific Commands and Event.
|
|
|
|
config BT_HCI_VS
|
|
bool "Zephyr HCI Vendor-Specific Commands"
|
|
depends on BT_HAS_HCI_VS || !BT_CTLR
|
|
default y if BT_HAS_HCI_VS
|
|
help
|
|
Enable support for the Zephyr HCI Vendor-Specific Commands in the
|
|
Host and/or Controller. This enables Set Version Information,
|
|
Supported Commands, Supported Features vendor commands.
|
|
|
|
config BT_HCI_VS_FATAL_ERROR
|
|
bool "Allow vendor specific HCI event Zephyr Fatal Error"
|
|
depends on BT_HCI_VS
|
|
help
|
|
Enable emitting HCI Vendor-Specific events for system and Controller
|
|
errors that are unrecoverable.
|
|
|
|
config BT_HCI_VS_EXT_DETECT
|
|
bool "Use heuristics to guess HCI vendor extensions support in advance"
|
|
depends on BT_HCI_VS && !BT_CTLR
|
|
default y if BOARD_QEMU_X86 || BOARD_QEMU_CORTEX_M3 || BOARD_NATIVE_POSIX
|
|
help
|
|
Use some heuristics to try to guess in advance whether the controller
|
|
supports the HCI vendor extensions in advance, in order to prevent
|
|
sending vendor commands to controller which may interpret them in
|
|
completely different ways.
|
|
|
|
config BT_HCI_MESH_EXT
|
|
bool "Mesh HCI Command support"
|
|
depends on BT_BROADCASTER && BT_OBSERVER && !BT_LL_SW_SPLIT
|
|
help
|
|
Enable support for the Bluetooth Mesh HCI Commands.
|
|
|
|
config BT_WAIT_NOP
|
|
bool "Wait for \"NOP\" Command Complete event during init"
|
|
help
|
|
Emit a Command Complete event from the Controller (and wait for it
|
|
from the Host) for the NOP opcode to indicate that the Controller is
|
|
ready to receive commands.
|
|
|
|
config BT_RPA
|
|
bool
|
|
select TINYCRYPT
|
|
select TINYCRYPT_AES
|
|
|
|
config BT_ASSERT
|
|
bool "Custom Bluetooth assert implementation"
|
|
default y
|
|
help
|
|
Use a custom Bluetooth assert implementation instead of the
|
|
kernel-wide __ASSERT() when CONFIG_ASSERT is disabled.
|
|
|
|
if BT_ASSERT
|
|
|
|
config BT_ASSERT_VERBOSE
|
|
bool "Print out an assert string when using BT_ASSERT"
|
|
default y
|
|
help
|
|
When CONFIG_BT_ASSERT is enabled, this option turns on printing the
|
|
cause of the assert to the console using printk().
|
|
|
|
config BT_ASSERT_PANIC
|
|
bool "Use k_panic() instead of k_oops()"
|
|
help
|
|
When CONFIG_BT_ASSERT is enabled, this option makes the code call
|
|
k_panic() instead of k_oops() when an assertion is triggered.
|
|
|
|
endif # BT_ASSERT
|
|
|
|
config BT_HCI_ERR_TO_STR
|
|
bool "Print HCI error codes as strings [EXPERIMENTAL]"
|
|
select EXPERIMENTAL
|
|
help
|
|
This configuration enables printing of HCI error
|
|
codes represented as strings.
|
|
See bt_hci_err_to_str() for more details.
|
|
|
|
config BT_MONITOR
|
|
bool
|
|
select LOG_OUTPUT
|
|
|
|
choice BT_DEBUG_TYPE
|
|
prompt "Bluetooth debug type"
|
|
default BT_DEBUG_NONE
|
|
|
|
config BT_DEBUG_NONE
|
|
bool "No debug log"
|
|
help
|
|
Select this to disable all Bluetooth debug logs.
|
|
|
|
config BT_DEBUG_MONITOR_UART
|
|
bool "Monitor protocol over UART"
|
|
select LOG
|
|
select CONSOLE_HAS_DRIVER
|
|
select BT_MONITOR
|
|
help
|
|
Use a custom logging protocol over the console UART
|
|
instead of plain-text output. Requires a special application
|
|
on the host side that can decode this protocol. Currently
|
|
the 'btmon' tool from BlueZ is capable of doing this.
|
|
|
|
If the target board has two or more external UARTs it is
|
|
possible to keep using UART_CONSOLE together with this option,
|
|
however if there is only a single external UART then
|
|
UART_CONSOLE needs to be disabled (in which case printk/printf
|
|
will get encoded into the monitor protocol).
|
|
|
|
config BT_DEBUG_MONITOR_RTT
|
|
bool "Monitor protocol over RTT"
|
|
depends on USE_SEGGER_RTT
|
|
depends on SEGGER_RTT_MAX_NUM_UP_BUFFERS >= 2
|
|
select LOG
|
|
select CONSOLE_HAS_DRIVER
|
|
select BT_MONITOR
|
|
help
|
|
Use a custom logging protocol over the RTT buffer instead of
|
|
plain-text output. Requires a special application
|
|
on the host side that can decode this protocol. Currently
|
|
the 'btmon' tool from BlueZ is capable of doing this.
|
|
|
|
if BT_DEBUG_MONITOR_RTT
|
|
|
|
config BT_DEBUG_MONITOR_RTT_BUFFER
|
|
int "Buffer number used for custom logger output."
|
|
range 1 SEGGER_RTT_MAX_NUM_UP_BUFFERS
|
|
default 1
|
|
help
|
|
Select index of up-buffer used for logger output.
|
|
Make sure the buffer number is not used by other logger,
|
|
e.g. in LOG_BACKEND_RTT_BUFFER, otherwise the buffer will be
|
|
overwritten.
|
|
|
|
config BT_DEBUG_MONITOR_RTT_BUFFER_NAME
|
|
string "Buffer name used for custom logger output."
|
|
default "btmonitor"
|
|
help
|
|
Select index of up-buffer used for logger output.
|
|
|
|
config BT_DEBUG_MONITOR_RTT_BUFFER_SIZE
|
|
int "Size of reserved up-buffer for custom logger output."
|
|
default 1024
|
|
help
|
|
Specify reserved size of up-buffer used for custom logger output.
|
|
|
|
endif # BT_DEBUG_MONITOR_RTT
|
|
|
|
endchoice # Bluetooth debug type
|