Linux Audio

Check our new training course

Loading...
# Bluetooth ATT/GATT configuration options

# Copyright (c) 2019 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menu "ATT and GATT Options"

config BT_ATT_ENFORCE_FLOW
	bool "Enforce strict flow control semantics for incoming PDUs"
	default y if !(BOARD_QEMU_CORTEX_M3 || BOARD_QEMU_X86 || ARCH_POSIX)
	help
	  Enforce flow control rules on incoming PDUs, preventing a peer
	  from sending new requests until a previous one has been responded
	  or sending a new indication until a previous one has been
	  confirmed. This may need to be disabled to avoid potential race
	  conditions arising from a USB based HCI transport that splits
	  HCI events and ACL data to separate endpoints.

config BT_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 BT_ATT_RETRY_ON_SEC_ERR
	bool "Automatic security elevation and retry on security errors"
	default y
	depends on BT_SMP
	help
	  If an ATT request fails due to insufficient security, the host will
	  try to elevate the security level and retry the ATT request.

config BT_EATT
	bool "Enhanced ATT Bearers support [EXPERIMENTAL]"
	depends on BT_L2CAP_ECRED
	select EXPERIMENTAL
	select BT_GATT_READ_MULT_VAR_LEN
	help
	  This option enables support for Enhanced ATT bearers support. When
	  enabled additional L2CAP channels can be connected as bearers enabling
	  multiple outstanding request.

if BT_EATT

config BT_EATT_MAX
	int "Maximum number of Enhanced ATT bearers"
	default 3
	range 1 16

	help
	  Number of Enhanced ATT bearers available.


config BT_EATT_AUTO_CONNECT
	bool "Automatically connect EATT bearers when a link is established"
	default y
	help
	  The device will try to connect BT_EATT_MAX enhanced ATT bearers when a
	  connection to a peer is established.

endif # BT_EATT

config BT_GATT_AUTO_RESUBSCRIBE
	bool "Automatic re-subscription to characteristics"
	default y
	imply BT_GATT_AUTO_SEC_REQ
	depends on BT_GATT_CLIENT
	help
	  Quirk: upon re-establishing a bonded connection, assumes the remote
	  forgot the CCC values and sets them again. If this behavior is not
	  desired for a particular subscription, set the
	  `BT_GATT_SUBSCRIBE_FLAG_NO_RESUB` flag.
	  This also means that upon a reconnection, the application will get an
	  unprompted call to its `subscribe` callback.

config BT_GATT_AUTO_SEC_REQ
	bool "Automatic security re-establishment request as a peripheral"
	default y
	depends on BT_SMP
	help
	  This option requests security re-establishment automatically whenever
	  a reconnection to a GATT client is established and
	  there are notifiable or indicatable characteristics for which security
	  is required. This configuration option only applies to the peripheral
	  role, which sends a Security Request for this purpose.
	  When disabled, it is the application's responsibility to call
	  bt_conn_set_security() to re-establish security prior to sending any
	  notifications or indications on the characteristics that require
	  security (unless the central does that first).
	  This option has been introduced to avoid interoperability issues with
	  commercially available central devices that react negatively to
	  receiving a Security Request immediately after reconnection.

config BT_GATT_SERVICE_CHANGED
	bool "GATT Service Changed support"
	default y
	help
	  This option enables support for the service changed characteristic.

config BT_GATT_DYNAMIC_DB
	bool "GATT dynamic database support"
	depends on BT_GATT_SERVICE_CHANGED
	help
	  This option enables registering/unregistering services at runtime.

config BT_GATT_CACHING
	bool "GATT Caching support"
	default y
	depends on BT_GATT_SERVICE_CHANGED
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CMAC
	help
	  This option enables support for GATT Caching. When enabled the stack
	  will register Client Supported Features and Database Hash
	  characteristics which can be used by clients to detect if anything has
	  changed on the GATT database.

if BT_GATT_CACHING

config BT_GATT_NOTIFY_MULTIPLE
	bool "GATT Notify Multiple Characteristic Values support"
	depends on BT_GATT_CACHING
	help
	  This option enables support for the GATT Notify Multiple
	  Characteristic Values procedure.

if BT_GATT_NOTIFY_MULTIPLE

config BT_GATT_NOTIFY_MULTIPLE_FLUSH_MS
	int "Delay for batching multiple notifications in a single PDU."
	default 1
	range 0 4000
	help
	  Sets the time (in milliseconds) during which consecutive GATT
	  notifications will be tentatively appended to form a single
	  ATT_MULTIPLE_HANDLE_VALUE_NTF PDU.

	  If set to 0, batching is disabled. Then, the only way to send
	  ATT_MULTIPLE_HANDLE_VALUE_NTF PDUs is to use bt_gatt_notify_multiple.

	  See the documentation of bt_gatt_notify() for more details.

endif # BT_GATT_NOTIFY_MULTIPLE

config BT_GATT_ENFORCE_CHANGE_UNAWARE
	bool "GATT Enforce change-unaware state"
	depends on BT_GATT_CACHING
	help
	  When enable this option blocks notification and indications to client
	  to conform to the following statement from the Bluetooth 5.1
	  specification:
	  '...the server shall not send notifications and indications to such
	  a client until it becomes change-aware."
	  In case the service cannot deal with sudden errors (-EAGAIN) then it
	  shall not use this option.

endif # BT_GATT_CACHING

config BT_GATT_ENFORCE_SUBSCRIPTION
	bool "GATT Enforce characteristic subscription"
	default y
	help
	  When enabled, this option will make the server block sending
	  notifications and indications to a device which has not subscribed to
	  the supplied characteristic.

config BT_GATT_CLIENT
	bool "GATT client support"
	help
	  This option enables support for the GATT Client role.

config BT_GATT_READ_MULTIPLE
	bool "GATT Read Multiple Characteristic Values support"
	default y
	help
	  This option enables support for the GATT Read Multiple Characteristic
	  Values procedure.

config BT_GATT_READ_MULT_VAR_LEN
	bool "GATT Read Multiple Variable Length Characteristic Values support"
	default y
	help
	  This option enables support for the GATT Read Multiple Variable Length
	  Characteristic Values procedure. Mandatory if EATT is enabled, optional
	  otherwise (Core spec v5.3, Vol 3, Part G, Section 4.2, Table 4.1).

config BT_GATT_AUTO_DISCOVER_CCC
	bool "Support to automatic discover the CCC handles of characteristics"
	depends on BT_GATT_CLIENT
	help
	  This option enables support for GATT to initiate discovery for CCC
	  handles if the CCC handle is unknown by the application.

config BT_GATT_AUTO_UPDATE_MTU
	bool "Automatically send ATT MTU exchange request on connect"
	depends on BT_GATT_CLIENT
	help
	  This option if enabled allows automatically sending request for ATT
	  MTU exchange.

config BT_GAP_AUTO_UPDATE_CONN_PARAMS
	bool "Automatic Update of Connection Parameters"
	default y
	depends on BT_PERIPHERAL
	help
	  This option if enabled allows automatically sending request for connection
	  parameters update after GAP recommended 5 seconds of connection as
	  peripheral.

config BT_GAP_PERIPHERAL_PREF_PARAMS
	bool "Configure peripheral preferred connection parameters"
	default y
	depends on BT_PERIPHERAL
	help
	  This allows to configure peripheral preferred connection parameters.
	  Enabling this option results in adding PPCP characteristic in GAP.
	  If disabled it is up to application to set expected connection parameters.

if BT_GAP_PERIPHERAL_PREF_PARAMS
config BT_PERIPHERAL_PREF_MIN_INT
	int "Peripheral preferred minimum connection interval in 1.25ms units"
	default 24
	range 6 65535
	help
	  Range 3200 to 65534 is invalid. 65535 represents no specific value.

config BT_PERIPHERAL_PREF_MAX_INT
	int "Peripheral preferred maximum connection interval in 1.25ms units"
	default 40
	range 6 65535
	help
	  Range 3200 to 65534 is invalid. 65535 represents no specific value.

config BT_PERIPHERAL_PREF_LATENCY
	int "Peripheral preferred peripheral latency in Connection Intervals"
	default 0
	range 0 499

config BT_PERIPHERAL_PREF_TIMEOUT
	int "Peripheral preferred supervision timeout in 10ms units"
	default 42
	range 10 65535
	help
	  It is up to user to provide valid timeout which pass required minimum
	  value: in milliseconds it shall be larger than
	  "(1+ Conn_Latency) * Conn_Interval_Max * 2"
	  where Conn_Interval_Max is given in milliseconds.
	  Range 3200 to 65534 is invalid. 65535 represents no specific value.
endif # BT_GAP_PERIPHERAL_PREF_PARAMS

config BT_DEVICE_NAME_GATT_WRITABLE
	bool "Allow to write name by remote GATT clients"
	depends on BT_DEVICE_NAME_DYNAMIC
	default y
	help
	  Enabling this option allows remote GATT clients to write to device
	  name GAP characteristic.

if BT_DEVICE_NAME_GATT_WRITABLE
config DEVICE_NAME_GATT_WRITABLE_ENCRYPT
	bool "Encryption required to write name by remote GATT clients"
	default y
	help
	  Enabling this option requires the connection to be encrypted to write
	  to the device name GAP characteristic.


config DEVICE_NAME_GATT_WRITABLE_AUTHEN
	bool "Authentication required to write name by remote GATT clients"
	help
	  Enabling this option requires the connection to be encrypted and
	  authenticated to write to the device name GAP characteristic.

endif #BT_DEVICE_NAME_GATT_WRITABLE

if BT_DEBUG

config BT_DEBUG_ATT
	bool "Bluetooth Attribute Protocol (ATT) debug"
	select DEPRECATED
	help
	  This option enables debug support for the Bluetooth
	  Attribute Protocol (ATT).

module = BT_ATT
legacy-debug-sym = BT_DEBUG_ATT
module-str = "Bluetooth Attribute Protocol (ATT)"
source "subsys/bluetooth/common/Kconfig.template.log_config_bt"

config BT_DEBUG_GATT
	bool "Bluetooth Generic Attribute Profile (GATT) debug"
	select DEPRECATED
	help
	  This option enables debug support for the Bluetooth
	  Generic Attribute Profile (GATT).

module = BT_GATT
legacy-debug-sym = BT_DEBUG_GATT
module-str = "Bluetooth Generic Attribute Profile (GATT)"
source "subsys/bluetooth/common/Kconfig.template.log_config_bt"

endif # BT_DEBUG

endmenu