blob: c9c9247dc91c270253ba17467ede3ae2dac49694 [file] [log] [blame]
# Bluetooth ATT/GATT configuration options
# Copyright (c) 2019 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
menu "ATT and GATT Options"
config BT_ATT_ERR_TO_STR
bool "Print ATT error codes as strings [EXPERIMENTAL]"
select EXPERIMENTAL
help
This configuration enables printing of ATT error
codes represented as strings.
See bt_att_err_to_str() for more details.
config BT_ATT_TX_COUNT
int "Number of ATT buffers"
default BT_BUF_ACL_TX_COUNT
default 3
range 1 $(UINT8_MAX)
help
These buffers are only used for sending anything over ATT.
Requests, responses, indications, confirmations, notifications.
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 if !BT_USE_PSA_API
select TINYCRYPT_AES if !BT_USE_PSA_API
select TINYCRYPT_AES_CMAC if !BT_USE_PSA_API
select PSA_WANT_KEY_TYPE_AES if BT_USE_PSA_API
select PSA_WANT_ALG_CMAC if BT_USE_PSA_API
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 $(UINT16_MAX) if !BT_CONN_PARAM_ANY
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 $(UINT16_MAX) if !BT_CONN_PARAM_ANY
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 if !BT_CONN_PARAM_ANY
config BT_PERIPHERAL_PREF_TIMEOUT
int "Peripheral preferred supervision timeout in 10ms units"
default 42
range 10 $(UINT16_MAX) if !BT_CONN_PARAM_ANY
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 device 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
choice BT_DEVICE_NAME_GATT_WRITABLE_SECURITY
prompt "Security requirements"
default DEVICE_NAME_GATT_WRITABLE_ENCRYPT
help
Select security requirementsf for writing device name by remote GATT
clients.
config DEVICE_NAME_GATT_WRITABLE_NONE
bool "No requirements"
config DEVICE_NAME_GATT_WRITABLE_ENCRYPT
bool "Encryption required"
config DEVICE_NAME_GATT_WRITABLE_AUTHEN
bool "Encryption and authentication required"
endchoice #BT_DEVICE_NAME_GATT_WRITABLE_SECURITY
endif #BT_DEVICE_NAME_GATT_WRITABLE
config BT_DEVICE_APPEARANCE_GATT_WRITABLE
bool "Allow to write GAP Appearance by remote GATT clients"
depends on BT_DEVICE_APPEARANCE_DYNAMIC
default y
help
Enabling this option allows remote GATT clients to write to device
appearance GAP characteristic.
if BT_DEVICE_APPEARANCE_GATT_WRITABLE
choice BT_DEVICE_APPEARANCE_GATT_WRITABLE
prompt "Security requirements"
default DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN
help
Select security requirementsf for writing device name by remote GATT
clients.
config BT_DEVICE_APPEARANCE_GATT_WRITABLE_NONE
bool "No requirements"
config BT_DEVICE_APPEARANCE_GATT_WRITABLE_ENCRYPT
bool "Encryption required"
config DEVICE_APPEARANCE_GATT_WRITABLE_AUTHEN
bool "Encryption and authentication required"
endchoice #BT_DEVICE_APPEARANCE_GATT_WRITABLE
endif #BT_DEVICE_APPEARANCE_GATT_WRITABLE
config BT_GATT_AUTHORIZATION_CUSTOM
bool "Custom authorization of GATT operations"
help
This option allows the user to define application-specific
authorization logic for GATT operations that can be registered
with the bt_gatt_authorization_cb_register API. See the API
documentation for more details.
endmenu