| # 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 || BT_CHANNEL_SOUNDING |
| # LE Read Supported Commands command complete event. |
| default 68 |
| range 68 $(UINT8_MAX) |
| range 78 $(UINT8_MAX) if BT_CHANNEL_SOUNDING |
| 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 || BOARD_NATIVE_SIM |
| 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 |