Add basic implementation of an internal storage handler that uses the local file system. The root directory for all Bluetooth related data is /bt. Each remote device has its own subdirectory and each key its own file. This helps keep the implementation very simple, but does come with the meta-data overhead for each file. As an example, the value of a key 0x0001 for a device with a static random address cc:11:22:33:44:55 would be stored in the following file: /bt/cc11223344551/0001. Local values such as the identity address are stored directly under /bt with a file name that matches the key the same way as remote-device files. For full functionality the implementation requires a file system that can support file/directory names of up to 13 characters in length. If the file system supports less than that (as is the case with FAT12) then only local values can be stored (in /bt/abcd). Local values include the identity address as well as the local IRK. Jira: ZEP-181 Change-Id: I7dc696af6353a154cb00dcd01a5f4ac3d7127e6b Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
548 lines
15 KiB
Plaintext
548 lines
15 KiB
Plaintext
# Kconfig - Bluetooth LE stack configuration options
|
|
|
|
#
|
|
# Copyright (c) 2015-2016 Intel Corporation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
menuconfig BLUETOOTH
|
|
bool "Bluetooth support"
|
|
default n
|
|
select NANO_TIMEOUTS
|
|
select NET_BUF
|
|
help
|
|
This option enables Bluetooth support.
|
|
|
|
if BLUETOOTH
|
|
|
|
choice
|
|
prompt "Bluetooth Stack Selection"
|
|
default BLUETOOTH_STACK_HCI
|
|
help
|
|
Select the Bluetooth stack to compile.
|
|
|
|
config BLUETOOTH_STACK_HCI
|
|
bool "HCI Stack"
|
|
help
|
|
Select the Bluetooth stack to use with HCI drivers.
|
|
|
|
config BLUETOOTH_STACK_NBLE
|
|
bool "Nordic BLE Stack"
|
|
help
|
|
Select the Bluetooth stack to use with Nordic BLE drivers.
|
|
|
|
config BLUETOOTH_STACK_HCI_RAW
|
|
bool "Bluetooth RAW HCI access to the controller"
|
|
help
|
|
This option allows to access Bluetooth controller
|
|
from the application with the RAW HCI protocol.
|
|
|
|
endchoice
|
|
|
|
comment "HCI Stack Configurations"
|
|
depends on BLUETOOTH_STACK_HCI
|
|
|
|
config BLUETOOTH_LE
|
|
bool "Bluetooth Low Energy (LE) support"
|
|
default y
|
|
select TINYCRYPT
|
|
select TINYCRYPT_AES if BLUETOOTH_SMP
|
|
select TINYCRYPT_AES_CMAC if BLUETOOTH_SMP
|
|
select TINYCRYPT_SHA256
|
|
select TINYCRYPT_SHA256_HMAC
|
|
select TINYCRYPT_SHA256_HMAC_PRNG
|
|
depends on BLUETOOTH_STACK_HCI
|
|
help
|
|
This option enables Bluetooth Low Energy (LE) support.
|
|
Currently it is mandatory whenever Bluetooth support
|
|
(CONFIG_BLUETOOTH) is enabled.
|
|
|
|
if BLUETOOTH_LE || BLUETOOTH_STACK_HCI_RAW
|
|
config BLUETOOTH_HCI_CMD_COUNT
|
|
int "Number of HCI command buffers"
|
|
default 2
|
|
range 2 64
|
|
help
|
|
Number of buffers available for HCI commands.
|
|
|
|
config BLUETOOTH_MAX_CMD_LEN
|
|
int "Maximum supported HCI command length"
|
|
default 64
|
|
default 255 if BLUETOOTH_BREDR
|
|
range 64 255
|
|
range 255 255 if BLUETOOTH_BREDR
|
|
help
|
|
Maximum length of each HCI command.
|
|
|
|
config BLUETOOTH_HCI_EVT_COUNT
|
|
int "Number of HCI event buffers"
|
|
default 4
|
|
default 8 if BLUETOOTH_CONN
|
|
range 2 64
|
|
help
|
|
Number of buffers available for HCI events. This number should
|
|
ideally be at least as large as the available outgoing buffers
|
|
to make sure we've got enough buffers to handle bursts of
|
|
Number of Completed Packets HCI events.
|
|
|
|
config BLUETOOTH_MAX_EVT_LEN
|
|
int "Maximum supported HCI event length"
|
|
default 68
|
|
default 255 if BLUETOOTH_BREDR
|
|
range 68 255
|
|
help
|
|
Maximum size of each HCI event buffer. E.g. one big event
|
|
for LE is the Command Complete for Read Local Supported
|
|
Commands. It is a 3 byte Command Complete header + 65 byte
|
|
return parameters = 68 bytes in total.
|
|
endif # BLUETOOTH_LE || BLUETOOTH_STACK_HCI_RAW
|
|
|
|
config BLUETOOTH_UART_TO_HOST_DEV_NAME
|
|
string "Device Name of UART Device to an external Bluetooth Host"
|
|
default "UART_0"
|
|
depends on BLUETOOTH_STACK_HCI_RAW
|
|
help
|
|
This option specifies the name of UART device to be used
|
|
to connect to an external Bluetooth Host when Zephyr is
|
|
acting as a Bluetooth Controller.
|
|
|
|
if (BLUETOOTH_LE && BLUETOOTH_CONN) || BLUETOOTH_STACK_HCI_RAW
|
|
config BLUETOOTH_ACL_IN_COUNT
|
|
int "Number of incoming ACL data buffers"
|
|
default 5
|
|
range 2 64
|
|
help
|
|
Number of buffers available for incoming ACL data.
|
|
|
|
config BLUETOOTH_L2CAP_IN_MTU
|
|
int "Maximum supported L2CAP MTU for incoming data"
|
|
default 23
|
|
default 65 if BLUETOOTH_SMP
|
|
default 200 if BLUETOOTH_BREDR
|
|
range 23 1300
|
|
range 65 1300 if BLUETOOTH_SMP
|
|
help
|
|
Maximum size of each incoming L2CAP PDU.
|
|
endif # BLUETOOTH_LE && BLUETOOTH_CONN || BLUETOOTH_STACK_HCI_RAW
|
|
|
|
if BLUETOOTH_LE
|
|
config BLUETOOTH_INTERNAL_STORAGE
|
|
bool "Use an internal persistent storage handler"
|
|
depends on FILE_SYSTEM
|
|
help
|
|
When selected the application doesn't need to register its own
|
|
persistent storage handlers through the bt_storage API, rather
|
|
an internal default handler is used for this.
|
|
|
|
config BLUETOOTH_RX_STACK_SIZE
|
|
int "Size of the receiving fiber stack"
|
|
default 1024
|
|
range 1024 65536
|
|
help
|
|
Size of the receiving fiber stack. This is the context from
|
|
which all event callbacks to the application occur. The
|
|
default value is sufficient for basic operation, but if the
|
|
application needs to do advanced things in its callbacks that
|
|
require extra stack space, this value can be increased to
|
|
accommodate for that.
|
|
|
|
config BLUETOOTH_PERIPHERAL
|
|
bool "Peripheral Role support"
|
|
default n
|
|
select BLUETOOTH_CONN
|
|
help
|
|
Select this for LE Peripheral role support.
|
|
|
|
config BLUETOOTH_CENTRAL
|
|
bool "Central Role support"
|
|
default n
|
|
select BLUETOOTH_CONN
|
|
help
|
|
Select this for LE Central role support.
|
|
|
|
config BLUETOOTH_CONN
|
|
bool
|
|
default n
|
|
|
|
if BLUETOOTH_CONN
|
|
config BLUETOOTH_ATT_MTU
|
|
int "Attribute Protocol (ATT) channel MTU"
|
|
default 23
|
|
default 50 if BLUETOOTH_SMP # BLUETOOTH_L2CAP_IN_MTU is big enough
|
|
# for two complete ACL packets
|
|
range 23 BLUETOOTH_L2CAP_IN_MTU
|
|
help
|
|
The MTU for the ATT channel. The minimum and default is 23,
|
|
whereas the maximum is limited by CONFIG_BLUETOOTH_L2CAP_IN_MTU.
|
|
|
|
config BLUETOOTH_ATT_PREPARE_COUNT
|
|
int "Number of ATT prepare write buffers"
|
|
default 0
|
|
range 0 64
|
|
help
|
|
Number of buffers available for ATT prepare write, setting
|
|
this to 0 disables GATT long/reliable writes.
|
|
|
|
config BLUETOOTH_ATT_REQ_COUNT
|
|
int "Number of ATT request buffers"
|
|
default BLUETOOTH_MAX_CONN
|
|
range 1 64
|
|
help
|
|
Number of outgoing buffers available for ATT requests, this controls
|
|
how many requests can be queued without blocking.
|
|
|
|
config BLUETOOTH_SMP
|
|
bool "Security Manager Protocol support"
|
|
default n
|
|
help
|
|
This option enables support for the Security Manager Protocol
|
|
(SMP), making it possible to pair devices over LE.
|
|
|
|
if BLUETOOTH_SMP
|
|
config BLUETOOTH_PRIVACY
|
|
bool "Privacy Feature"
|
|
default n
|
|
help
|
|
Enable local Privacy Feature support. This makes it possible
|
|
to use Resolvable Private Addresses (RPAs).
|
|
|
|
config BLUETOOTH_RPA_TIMEOUT
|
|
int "Resolvable Private Address timeout"
|
|
depends on BLUETOOTH_PRIVACY
|
|
default 900
|
|
range 1 65535
|
|
help
|
|
This option defines how often resolvable private address is rotated.
|
|
Value is provided in seconds and defaults to 900 seconds (15 minutes).
|
|
|
|
config BLUETOOTH_SIGNING
|
|
bool "Data signing support"
|
|
default n
|
|
help
|
|
This option enables data signing which is used for transferring
|
|
authenticated data in an unencrypted connection.
|
|
|
|
config BLUETOOTH_SMP_SC_ONLY
|
|
bool "Secure Connections Only Mode"
|
|
default n
|
|
help
|
|
This option enables support for Secure Connection Only Mode. In this
|
|
mode device shall only use Security Mode 1 Level 4 with exception
|
|
for services that only require Security Mode 1 Level 1 (no security).
|
|
Security Mode 1 Level 4 stands for authenticated LE Secure Connections
|
|
pairing with encryption. Enabling this option disables legacy pairing.
|
|
|
|
config BLUETOOTH_USE_DEBUG_KEYS
|
|
bool "Enable Security Manager Debug Mode"
|
|
default n
|
|
depends on BLUETOOTH_TINYCRYPT_ECC
|
|
help
|
|
This option places Security Manager in a Debug Mode. In this mode
|
|
predefined Diffie-Hellman private/public key pair is used as described
|
|
in Core Specification Vol. 3, Part H, 2.3.5.6.1. This option should
|
|
only be enabled for debugging and should never be used in production.
|
|
If this option is enabled anyone is able to decipher encrypted air
|
|
traffic.
|
|
|
|
endif # BLUETOOTH_SMP
|
|
|
|
config BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
|
|
bool "L2CAP Dynamic Channel support"
|
|
depends on BLUETOOTH_SMP
|
|
default n
|
|
help
|
|
This option enables support for LE Connection oriented Channels,
|
|
allowing the creation of dynamic L2CAP Channels.
|
|
|
|
config BLUETOOTH_GATT_DYNAMIC_DB
|
|
bool "GATT dynamic database support"
|
|
default n
|
|
help
|
|
This option enables GATT services to be added dynamically to database.
|
|
|
|
config BLUETOOTH_GATT_CLIENT
|
|
bool "GATT client support"
|
|
default n
|
|
help
|
|
This option enables support for the GATT Client role.
|
|
|
|
config BLUETOOTH_MAX_PAIRED
|
|
int "Maximum number of paired devices"
|
|
default 1
|
|
range 1 128
|
|
help
|
|
Maximum number of paired Bluetooth devices. The minimum (and
|
|
default) number is 1.
|
|
|
|
endif # BLUETOOTH_CONN
|
|
|
|
config BLUETOOTH_TINYCRYPT_ECC
|
|
bool "Use TinyCrypt library for ECDH"
|
|
default n
|
|
select TINYCRYPT_ECC_DH
|
|
depends on MICROKERNEL
|
|
help
|
|
If this option is set TinyCrypt library is used for emulating the
|
|
ECDH HCI commands and events needed by e.g. LE Secure Connections.
|
|
If not set controller crypto is used for ECDH and if
|
|
controller doesn't support required HCI commands LE Secure
|
|
Connections support will be disabled.
|
|
|
|
endif # BLUETOOTH_LE
|
|
|
|
config BLUETOOTH_MAX_CONN
|
|
int "Maximum number of simultaneous connections"
|
|
depends on BLUETOOTH_CONN || BLUETOOTH_CONTROLLER
|
|
default 1
|
|
range 1 64
|
|
help
|
|
Maximum number of simultaneous Bluetooth connections
|
|
supported. The minimum (and default) number is 1.
|
|
|
|
config BLUETOOTH_DEBUG
|
|
bool
|
|
default n
|
|
|
|
choice
|
|
prompt "Bluetooth debug type"
|
|
depends on BLUETOOTH
|
|
default BLUETOOTH_DEBUG_NONE
|
|
|
|
config BLUETOOTH_DEBUG_NONE
|
|
bool "No debug log"
|
|
help
|
|
Select this to disable all Bluetooth debug logs.
|
|
|
|
config BLUETOOTH_DEBUG_LOG
|
|
bool "Normal printf-style to console"
|
|
select BLUETOOTH_DEBUG
|
|
select STDOUT_CONSOLE
|
|
select SYS_LOG
|
|
help
|
|
This option enables Bluetooth debug going to standard
|
|
serial console.
|
|
|
|
config BLUETOOTH_DEBUG_MONITOR
|
|
bool "Monitor protocol over UART"
|
|
depends on BLUETOOTH_STACK_HCI
|
|
select BLUETOOTH_DEBUG
|
|
select CONSOLE_HAS_DRIVER
|
|
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).
|
|
|
|
endchoice
|
|
|
|
config BLUETOOTH_DEBUG_COLOR
|
|
bool "Use colored logs"
|
|
depends on BLUETOOTH_DEBUG_LOG
|
|
select SYS_LOG_SHOW_COLOR
|
|
default y
|
|
help
|
|
Use color in the logs. This requires an ANSI capable terminal.
|
|
|
|
config BLUETOOTH_MONITOR_ON_DEV_NAME
|
|
string "Device Name of Bluetooth monitor logging UART"
|
|
depends on BLUETOOTH_DEBUG_MONITOR
|
|
default "UART_0"
|
|
help
|
|
This option specifies the name of UART device to be used
|
|
for the Bluetooth monitor logging.
|
|
|
|
if BLUETOOTH_DEBUG
|
|
config BLUETOOTH_DEBUG_HCI_CORE
|
|
bool "Bluetooth HCI core debug"
|
|
depends on BLUETOOTH_STACK_HCI
|
|
default n
|
|
help
|
|
This option enables debug support for Bluetooth HCI
|
|
core.
|
|
|
|
config BLUETOOTH_DEBUG_CONN
|
|
bool "Bluetooth connection debug"
|
|
depends on BLUETOOTH_CONN
|
|
default n
|
|
help
|
|
This option enables debug support for Bluetooth
|
|
connection handling.
|
|
|
|
config BLUETOOTH_DEBUG_KEYS
|
|
bool "Bluetooth security keys debug"
|
|
depends on BLUETOOTH_STACK_HCI
|
|
depends on BLUETOOTH_SMP
|
|
default n
|
|
help
|
|
This option enables debug support for the handling of
|
|
Bluetooth security keys.
|
|
|
|
config BLUETOOTH_DEBUG_L2CAP
|
|
bool "Bluetooth L2CAP debug"
|
|
depends on BLUETOOTH_CONN
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
L2ACP layer.
|
|
|
|
config BLUETOOTH_DEBUG_SMP
|
|
bool "Bluetooth Security Manager Protocol (SMP) debug"
|
|
depends on BLUETOOTH_STACK_HCI
|
|
depends on BLUETOOTH_SMP
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
Security Manager Protocol (SMP).
|
|
|
|
config BLUETOOTH_SMP_SELFTEST
|
|
bool "Bluetooth SMP self tests executed on init"
|
|
depends on BLUETOOTH_DEBUG_SMP
|
|
default n
|
|
help
|
|
This option enables SMP self-tests executed on startup
|
|
to verify security and crypto functions.
|
|
|
|
config BLUETOOTH_SMP_FORCE_BREDR
|
|
bool "Force Bluetooth SMP over BR/EDR"
|
|
depends on BLUETOOTH_DEBUG_SMP
|
|
default n
|
|
help
|
|
This option enables SMP over BR/EDR even if controller is not
|
|
supporting BR/EDR Secure Connections. This optino is solely for
|
|
testing and should never be enabled on production devices.
|
|
|
|
config BLUETOOTH_DEBUG_ATT
|
|
bool "Bluetooth Attribute Protocol (ATT) debug"
|
|
depends on BLUETOOTH_CONN
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
Attribute Protocol (ATT).
|
|
|
|
config BLUETOOTH_DEBUG_GATT
|
|
bool "Bluetooth Generic Attribute Profile (GATT) debug"
|
|
depends on BLUETOOTH_CONN
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
Generic Attribute Profile (GATT).
|
|
|
|
config BLUETOOTH_DEBUG_RFCOMM
|
|
bool "Bluetooth RFCOMM debug"
|
|
depends on BLUETOOTH_RFCOMM
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
RFCOMM layer.
|
|
|
|
config BLUETOOTH_DEBUG_HFP_HF
|
|
bool "Bluetooth Hands Free Profile (HFP) debug"
|
|
depends on BLUETOOTH_HFP_HF
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
Hands Free Profile (HFP).
|
|
|
|
config BLUETOOTH_DEBUG_AVDTP
|
|
bool "Bluetooth AVDTP debug"
|
|
depends on BLUETOOTH_AVDTP
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth AVDTP.
|
|
|
|
config BLUETOOTH_DEBUG_A2DP
|
|
bool "Bluetooth A2DP debug"
|
|
depends on BLUETOOTH_A2DP
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
A2DP profile.
|
|
|
|
config BLUETOOTH_DEBUG_SDP
|
|
bool "Bluetooth Service Discovery Protocol (SDP) debug"
|
|
depends on BLUETOOTH_BREDR
|
|
default n
|
|
help
|
|
This option enables debug support for the Bluetooth
|
|
Service Discovery Protocol (SDP).
|
|
|
|
endif # BLUETOOTH_DEBUG
|
|
|
|
config BLUETOOTH_BREDR
|
|
bool "Bluetooth BR/EDR support [EXPERIMENTAL]"
|
|
default n
|
|
depends on BLUETOOTH_STACK_HCI
|
|
select BLUETOOTH_CONN
|
|
select BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
|
|
help
|
|
This option enables Bluetooth BR/EDR support"
|
|
|
|
if BLUETOOTH_BREDR
|
|
config BLUETOOTH_RFCOMM
|
|
bool "Bluetooth RFCOMM protocol support [EXPERIMENTAL]"
|
|
default n
|
|
help
|
|
This option enables Bluetooth RFCOMM support
|
|
|
|
config BLUETOOTH_RFCOMM_L2CAP_MTU
|
|
int "L2CAP MTU for RFCOMM frames"
|
|
default BLUETOOTH_L2CAP_IN_MTU
|
|
depends on BLUETOOTH_RFCOMM
|
|
range BLUETOOTH_L2CAP_IN_MTU 32767
|
|
help
|
|
Maximum size of L2CAP PDU for RFCOMM frames.
|
|
|
|
config BLUETOOTH_HFP_HF
|
|
bool "Bluetooth Handsfree profile HF Role support [EXPERIMENTAL]"
|
|
default n
|
|
select BLUETOOTH_RFCOMM
|
|
help
|
|
This option enables Bluetooth HF support
|
|
|
|
config BLUETOOTH_AVDTP
|
|
bool "Bluetooth AVDTP protocol support [EXPERIMENTAL]"
|
|
default n
|
|
help
|
|
This option enables Bluetooth AVDTP support
|
|
|
|
config BLUETOOTH_A2DP
|
|
bool "Bluetooth A2DP Profile [EXPERIMENTAL]"
|
|
default n
|
|
select BLUETOOTH_AVDTP
|
|
help
|
|
This option enables the A2DP profile
|
|
|
|
config BLUETOOTH_PAGE_TIMEOUT
|
|
hex "Bluetooth Page Timeout"
|
|
default 0x2000
|
|
range 0x0001 0xffff
|
|
help
|
|
This option sets the page timeout value. Value is selected as
|
|
(N * 0.625) ms.
|
|
|
|
config BLUETOOTH_BREDR_NAME
|
|
string "Bluetooth BR/EDR device name"
|
|
default "Zephyr"
|
|
help
|
|
Bluetooth BR/EDR name. Name can be up to 248 bytes long (excluding
|
|
NULL termination). Can be empty string.
|
|
endif # BLUETOOTH_BREDR
|
|
endif # BLUETOOTH
|