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
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
178endif # BT_CONN
179
180rsource "Kconfig.iso"
181rsource "common/Kconfig"
182rsource "host/Kconfig"
183rsource "controller/Kconfig"
184rsource "shell/Kconfig"
185rsource "crypto/Kconfig"
186rsource "lib/Kconfig"
187rsource "Kconfig.logging"
188
189endif # BT_HCI
190
191config BT_COMPANY_ID
192	hex "Company Id"
193	default 0x05F1
194	range 0x0000 0xFFFF
195	help
196	  Set the Bluetooth Company Identifier for this device. The Linux
197	  Foundation's Company Identifier (0x05F1) is the default value for
198	  this option although silicon vendors and hardware manufacturers
199	  can set their own. Note that the controller's Company Identifier is
200	  controlled by BT_CTLR_COMPANY_ID. The full list of Bluetooth
201	  Company Identifiers can be found here:
202	  https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
203
204endif # BT
205