# Kconfig - Bluetooth LE stack configuration options

#
# Copyright (c) 2015 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
	select BLUETOOTH_LE
	help
	  This option enables Bluetooth support.

if BLUETOOTH
config BLUETOOTH_LE
	bool "Bluetooth Low Energy (LE) support"
	default n
	help
	  This option enables Bluetooth Low Energy (LE) support.
	  Currently it is mandatory whenever Bluetooth support
	  (CONFIG_BLUETOOTH) is enabled.

if BLUETOOTH_LE
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
	range 64 255
	help
	  Maximum length of each HCI command.

config  BLUETOOTH_HCI_EVT_COUNT
	int "Number of HCI event buffers"
	default 8 if BLUETOOTH_CONN
	default 4
	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
	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.

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_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 65 if BLUETOOTH_SMP
	default 23 if !BLUETOOTH_SMP
	range 65 1300 if BLUETOOTH_SMP
	range 23 1300 if !BLUETOOTH_SMP
	help
	  Maximum size of each incoming L2CAP PDU.

config  BLUETOOTH_ATT_MTU
	int "Attribute Protocol (ATT) channel MTU"
	default 50 if BLUETOOTH_SMP # BLUETOOTH_L2CAP_IN_MTU is big enough
				    # for two complete ACL packets
	default 23
	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_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_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.
endif # BLUETOOTH_SMP

config BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
	bool "L2CAP Dynamic Channel support"
	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_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.

endif # BLUETOOTH_CONN

endif # BLUETOOTH_LE

config	BLUETOOTH_DEBUG
	bool "Bluetooth debug support"
	select STDOUT_CONSOLE
	default n
	help
	  This option enables Bluetooth debug going to standard
	  serial console.

if BLUETOOTH_DEBUG
config  BLUETOOTH_DEBUG_COLOR
	bool "Use colored logs"
	default y
	help
	  Use color in the logs. This requires an ANSI capable terminal.

config	BLUETOOTH_DEBUG_HCI_CORE
	bool "Bluetooth HCI core debug"
	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_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_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_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).

endif # BLUETOOTH_DEBUG

config BLUETOOTH_BREDR
	bool "Bluetooth BR/EDR support [EXPERIMENTAL]"
	default n
	select BLUETOOTH_CONN
	help
	  This option enables Bluetooth BR/EDR support"

endif # BLUETOOTH
