nuttx/wireless/bluetooth/Kconfig
Tiago Medicci Serrano fe156a40e3 wireless/bluetooth: Add option to set the HCI TX thread affinity
By enabling the config `CONFIG_BLUETOOTH_TXCMD_PINNED_TO_CORE` and
setting the value of `CONFIG_BLUETOOTH_TXCMD_CORE`, it's possible
to pin the HCI TX thread to a specific core on a SMP-enabled setup.
This is necessary for devices that require that the function that
sends data (`bt_send`) to be called from a specific core.
2023-10-24 22:41:44 +08:00

225 lines
7.3 KiB
Plaintext

#############################################################################
# wireless/bluetooth/Kconfig
# Bluetooth LE stack configuration options
#
# Copyright (C) 2018 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Ported from the Intel/Zephyr arduino101_firmware_source-v1.tar package
# where the code was released with a compatible 3-clause BSD license:
#
# Copyright (c) 2016, Intel Corporation
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
#############################################################################
menuconfig WIRELESS_BLUETOOTH
bool "Bluetooth LE support"
default n
depends on ALLOW_BSD_COMPONENTS
select MM_IOB
select SCHED_HPWORK
select SCHED_LPWORK
---help---
This option enables Bluetooth Low Energy support.
if WIRELESS_BLUETOOTH
menuconfig WIRELESS_BLUETOOTH_HOST
bool "BLE Host Layer"
default y
---help---
This enables support for BLE host layer implementation. This can be
used to interface to a BLE controller via HCI protocol (either to a local
BLE link-layer or to an external device over HCI UART).
if WIRELESS_BLUETOOTH_HOST
config DEVICE_APPEARANCE
int "Appearance sub-category value"
default 0
range 0 5188
---help---
This value comes from the "Appearance sub-category"
section (2.6.3) in the Bluetooth Assigned Numbers document.
config DEVICE_NAME
string "Device name"
default "Apache NuttX"
---help---
The device name.
config DEVICE_LOCAL_NAME
string "Device local name"
default "NuttX"
---help---
The device name used for advertising.
endif # WIRELESS_BLUETOOTH_HOST
config BLUETOOTH_MAX_CONN
int "Maximum number of simultaneous connections"
default 1
range 1 16
---help---
Maximum number of simultaneous Bluetooth connections
supported. The minimum (and default) number is 1.
config BLUETOOTH_MAX_PAIRED
int "Maximum number of paired devices"
default 1
range 1 32
---help---
Maximum number of paired Bluetooth devices. The minimum (and
default) number is 1.
config BLUETOOTH_MAXSCANDATA
int "Max scan data size"
default 64
range 1 255
---help---
Scan results will be buffered in memory until the user requests the
scan results. This parameter specifies the maximum size of the
advertiser data that accompanies the scan result.
This contributes to a static memory allocation that will be greater
than CONFIG_BLUETOOTH_MAXSCANDATA * CONFIG_BLUETOOTH_MAXSCANRESULT
config BLUETOOTH_MAXSCANRESULT
int "Max scan results"
default 8
range 1 255
---help---
Scan results will be buffered in memory until the user requests the
scan results. This parameter specifies the maximum number of
results that can be buffered before scan results are lost.
This contributes to a static memory allocation that will be greater
than CONFIG_BLUETOOTH_MAXSCANDATA * CONFIG_BLUETOOTH_MAXSCANRESULT
config BLUETOOTH_MAXDISCOVER
int "Max GATT discovery results"
default 8
range 1 255
---help---
GATT discovery results will be buffered in memory until the user
requests the results. This parameter specifies the maximum results
that can be buffered before discovery results are lost.
config BLUETOOTH_BUFFER_PREALLOC
int "Number of pre-allocated buffer structures"
default 20
---help---
This specifies the total number of preallocated buffer structures.
This is for performance optimization. If additional buffer structures
are needed, they will be allocated dynamically at some loss of
performance.
config BLUETOOTH_BUFFER_IRQRESERVE
int "Reserved pre-allocated primitive structures"
default 0
---help---
If buffer structures can be allocated from interrupt handlers, then
this specifies the number of pre-allocated structures that are
reserved for for use only by interrupt handlers. This may be set
zero to reserve no buffers for interrupt handlers. In that case,
the allocation will fail if tasking logic has allocated them all.
Interrupt logic will first attempt to allocate from the general,
pre-allocated buffer pool that will contain up to (size
CONFIG_BLUETOOTH_BUFFER_PREALLOC - BLUETOOTH_BUFFER_IRQRESERVE)
entries. If that fails, then it will try to take a buffer from
the reserve (size CONFIG_BLUETOOTH_BUFFER_IRQRESERVE).
Non-interrupt logic will also first attempt to allocate from the
general, pre-allocated buffer pool. If that fails, it will
dynamically allocate the buffer with an additional cost in
performance.
NOTE: The Bluetooth stack never allocates buffers from the
interrupt level. This setting only needs to be non-zero if your
low-level Bluetooth driver needs to do such allocations.
menu "Kernel Thread Configuration"
config BLUETOOTH_TXCMD_STACKSIZE
int "Tx command thread stack size"
default DEFAULT_TASK_STACKSIZE
config BLUETOOTH_TXCMD_PRIORITY
int "Tx command thread priority"
default 100
range 1 255
config BLUETOOTH_TXCMD_NMSGS
int "Tx command thread mqueue size"
default 16
config BLUETOOTH_TXCONN_STACKSIZE
int "Tx connection thread stack size"
default DEFAULT_TASK_STACKSIZE
config BLUETOOTH_TXCONN_PRIORITY
int "Tx connection thread priority"
default 100
range 1 255
config BLUETOOTH_TXCONN_NMSGS
int "Tx connection thread mqueue size"
default 16
config BLUETOOTH_TXCMD_PINNED_TO_CORE
bool "Pin Tx command thread to specific core"
depends on SMP
default n
---help---
This option enables us to set the affinity of the Tx command thread
to make it run on a specific core.
if BLUETOOTH_TXCMD_PINNED_TO_CORE
config BLUETOOTH_TXCMD_CORE
int "Tx command thread CPU core"
default 1
range 1 SMP_NCPUS
---help---
Select the core to pin the Tx command thread.
endif # BLUETOOTH_TXCMD_PINNED_TO_CORE
endmenu # Kernel Thread Configuration
config BLUETOOTH_SMP_SELFTEST
bool "Bluetooth SMP self tests executed on init"
default n
---help---
This option enables SMP self-tests executed on startup
to verify security and crypto functions.
endif # WIRELESS_BLUETOOTH