1# Bluetooth configuration options
2
3# Copyright (c) 2016 Intel Corporation
4# Copyright (c) 2021 Nordic Semiconductor ASA
5# SPDX-License-Identifier: Apache-2.0
6
7menuconfig BT
8	bool "Bluetooth"
9	# Some BT threads use co-op priorities to implement critical sections,
10	# will need some refactoring to work on SMP systems.
11	depends on !SMP
12	select NET_BUF
13	help
14	  This option enables Bluetooth support.
15
16if BT
17
18choice BT_STACK_SELECTION
19	prompt "Bluetooth Stack Selection"
20	default BT_HCI
21	help
22	  Select the Bluetooth stack to compile.
23
24config BT_HCI
25	bool "HCI-based"
26	help
27	  HCI-based stack with optional host & controller parts and an
28	  HCI driver in between.
29
30config BT_CUSTOM
31	bool "Custom"
32	help
33	  Select a custom, non-HCI based stack. If you're not sure what
34	  this is, you probably want the HCI-based stack instead.
35
36endchoice
37
38# The Bluetooth subsystem requires the system workqueue to execute at
39# a cooperative priority.
40config SYSTEM_WORKQUEUE_PRIORITY
41	range -256 -1
42
43if BT_HCI
44
45config BT_HCI_RAW
46	bool "RAW HCI access"
47	help
48	  This option allows to access Bluetooth controller
49	  from the application with the RAW HCI protocol.
50
51config BT_HCI_RAW_H4
52	bool "RAW HCI H:4 transport"
53	help
54	  This option enables HCI RAW access to work over an H:4
55	  transport, note that it still need to be selected at runtime.
56
57config BT_HCI_RAW_H4_ENABLE
58	bool "RAW HCI H:4 transport enable"
59	depends on BT_HCI_RAW_H4
60	help
61	  This option enables use of H:4 transport for HCI RAW access at
62	  build time.
63
64config BT_HCI_RAW_RESERVE
65	int "Buffer headroom needed for HCI transport"
66	depends on BT_HCI_RAW
67	default 1 if BT_HCI_RAW_H4
68	default 0
69	help
70	  This option is used by the HCI raw transport implementation to
71	  declare how much headroom it needs for any HCI transport headers.
72
73config BT_HCI_RAW_CMD_EXT
74	bool "RAW HCI Command Extension"
75	help
76	  This option enables HCI RAW command extension so the driver can
77	  register it own command table extension.
78
79config BT_PERIPHERAL
80	bool "Peripheral Role support"
81	select BT_BROADCASTER
82	select BT_CONN
83	default y if BT_HCI_RAW
84	help
85	  Select this for LE Peripheral role support.
86
87config BT_CENTRAL
88	bool "Central Role support"
89	select BT_OBSERVER
90	select BT_CONN
91	default y if BT_HCI_RAW
92	help
93	  Select this for LE Central role support.
94
95config BT_BROADCASTER
96	bool "Broadcaster Role support"
97	default y if !BT_OBSERVER
98	help
99	  Select this for LE Broadcaster role support.
100
101config BT_OBSERVER
102	bool "Observer Role support"
103	help
104	  Select this for LE Observer role support.
105
106rsource "Kconfig.adv"
107
108config BT_CONN
109	bool
110
111config BT_MAX_CONN
112	int "Maximum number of simultaneous connections"
113	depends on BT_CONN
114	range 1 250
115	default 2 if BT_MESH_GATT_CLIENT
116	default 1
117	help
118	  Maximum number of simultaneous Bluetooth connections
119	  supported.
120
121config BT_CONN_TX
122	bool
123	default BT_CONN || BT_ISO_BROADCASTER
124	help
125	  Hidden configuration that is true if ACL or broadcast ISO is enabled
126
127if BT_CONN
128config BT_HCI_ACL_FLOW_CONTROL
129	bool "Controller to Host ACL flow control support"
130	# Enable if building a Host-only build
131	default y if !BT_CTLR && !BT_STM32_IPM && !BT_ESP32  && !BT_STM32WBA
132	# Enable if building a Controller-only build
133	default y if BT_HCI_RAW
134	select POLL
135	help
136	  Enable support for throttling ACL buffers from the controller
137	  to the host. This is particularly useful when the host and
138	  controller are on separate cores since it ensures that we do
139	  not run out of incoming ACL buffers.
140
141config BT_REMOTE_VERSION
142	bool "Allow fetching of remote version"
143	# Enable if building a Controller-only build
144	default y if BT_HCI_RAW
145	help
146	  Enable this to get access to the remote version in the Controller and
147	  in the Host through bt_conn_get_remote_info(). The fields in question
148	  can then be found in the bt_conn_remote_info struct.
149
150config BT_PHY_UPDATE
151	bool "PHY Update"
152	default y
153	depends on !BT_CTLR || BT_CTLR_PHY_UPDATE_SUPPORT
154	help
155	  Enable support for Bluetooth 5.0 PHY Update Procedure.
156
157config BT_DATA_LEN_UPDATE
158	bool "Data Length Update"
159	default y
160	depends on !BT_CTLR || BT_CTLR_DATA_LEN_UPDATE_SUPPORT
161	help
162	  Enable support for Bluetooth v4.2 LE Data Length Update procedure.
163
164config BT_PER_ADV_SYNC_TRANSFER_RECEIVER
165	bool "Periodic Advertising Sync Transfer receiver"
166	depends on BT_PER_ADV_SYNC && (!BT_CTLR || BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT)
167
168config BT_PER_ADV_SYNC_TRANSFER_SENDER
169	bool "Periodic Advertising Sync Transfer sender"
170	depends on (BT_PER_ADV_SYNC || BT_PER_ADV) && (!BT_CTLR || BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT)
171
172config BT_SCA_UPDATE
173	bool "Sleep Clock Accuracy Update"
174	default y if BT_ISO_PERIPHERAL || BT_ISO_CENTRAL
175	depends on !BT_CTLR || BT_CTLR_SCA_UPDATE_SUPPORT
176	help
177	  Enable support for Bluetooth 5.1 Sleep Clock Accuracy Update Procedure
178
179config BT_TRANSMIT_POWER_CONTROL
180	bool "LE Power Control"
181	depends on !BT_CTLR || BT_CTLR_LE_POWER_CONTROL_SUPPORT
182	help
183	  Enable support for LE Power Control Request feature that is defined in the
184	  Bluetooth Core specification, Version 5.4 | Vol 6, Part B, Section 4.6.31.
185
186endif # BT_CONN
187
188rsource "Kconfig.iso"
189rsource "common/Kconfig"
190rsource "host/Kconfig"
191rsource "controller/Kconfig"
192rsource "shell/Kconfig"
193rsource "crypto/Kconfig"
194rsource "lib/Kconfig"
195rsource "Kconfig.logging"
196
197endif # BT_HCI
198
199config BT_COMPANY_ID
200	hex "Company Id"
201	default 0x05F1
202	range 0x0000 0xFFFF
203	help
204	  Set the Bluetooth Company Identifier for this device. The Linux
205	  Foundation's Company Identifier (0x05F1) is the default value for
206	  this option although silicon vendors and hardware manufacturers
207	  can set their own. Note that the controller's Company Identifier is
208	  controlled by BT_CTLR_COMPANY_ID. The full list of Bluetooth
209	  Company Identifiers can be found here:
210	  https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
211
212endif # BT
213