Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
# Kconfig - Bluetooth LE stack configuration options

#
# Copyright (c) 2016-2017 Nordic Semiconductor ASA
# Copyright (c) 2015-2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

comment "Host Stack Configuration"

config BLUETOOTH_HCI_HOST
	# Virtual/hidden option to make the conditions more intuitive
	bool
	default y
	depends on !BLUETOOTH_HCI_RAW
	select POLL

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_RX_BUF_COUNT
	int "Number of HCI RX buffers"
	default 10
	default 3 if BLUETOOTH_RECV_IS_RX_THREAD
	range 2 255
	help
	  Number of buffers available for incoming ACL packets or HCI events
	  from the controller.

config BLUETOOTH_RX_BUF_LEN
	int "Maximum supported HCI RX buffer length"
	default 76
	default 264 if BLUETOOTH_BREDR
	range 73 2000
	help
	  Maximum data size for each HCI RX buffer. This size includes
	  everything starting with the ACL or HCI event headers. Note that
	  buffer sizes are always rounded up to the nearest multiple of 4,
	  so if this Kconfig value is something else then there will be some
	  wasted space. The minimum of 73 has been taken for LE SC which has
	  an L2CAP MTU of 65 bytes. On top of this there's the L2CAP header
	  (4 bytes) and the ACL header (also 4 bytes) which yields 73 bytes.

config BLUETOOTH_HCI_TX_STACK_SIZE
	# Stack size needed for executing bt_send with specified driver
	int
	# Even if no driver is selected the following default is still
	# needed e.g. for unit tests.
	default 256
	default 256 if BLUETOOTH_H4
	default 256 if BLUETOOTH_H5
	default 256 if BLUETOOTH_SPI
	default 640 if BLUETOOTH_CONTROLLER

config BLUETOOTH_RECV_IS_RX_THREAD
	# Virtual option set by the HCI driver to indicate that there's
	# no need for the host to have its own RX thread, rather the
	# context that bt_recv() gets called in is already good enough.
	# If this is set, the driver RX thread is required as the first
	# thing to make a call to bt_rx_thread_ready().
	bool

config BLUETOOTH_RX_STACK_SIZE
	int "Size of the receiving thread stack"
	depends on BLUETOOTH_HCI_HOST || BLUETOOTH_RECV_IS_RX_THREAD
	default 1024
	default 512 if CONFIG_BLUETOOTH_HCI_RAW
	range 1024 65536
	range 512 65536 if CONFIG_BLUETOOTH_HCI_RAW
	help
	  Size of the receiving thread stack. This is the context from
	  which all event callbacks to the application occur. The
	  default value is sufficient for basic operation, but if the
	  application needs to do advanced things in its callbacks that
	  require extra stack space, this value can be increased to
	  accommodate for that.

if BLUETOOTH_HCI_HOST
config BLUETOOTH_HOST_CRYPTO
	# Hidden option that compiles in random number generation and AES
	# encryption support using TinyCrypt library if software-based
	# controller is disabled.
	bool
	default y if !BLUETOOTH_CONTROLLER
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_SHA256
	select TINYCRYPT_SHA256_HMAC
	select TINYCRYPT_SHA256_HMAC_PRNG

config BLUETOOTH_INTERNAL_STORAGE
	bool "Use an internal persistent storage handler"
	depends on FILE_SYSTEM
	depends on PRINTK
	help
	  When selected the application doesn't need to register its own
	  persistent storage handlers through the bt_storage API, rather
	  an internal default handler is used for this.

if BLUETOOTH_CONN

if BLUETOOTH_HCI_ACL_FLOW_CONTROL
config BLUETOOTH_ACL_RX_COUNT
	int "Number of incoming ACL data buffers"
	default 6
	default BLUETOOTH_CONTROLLER_RX_BUFFERS if BLUETOOTH_CONTROLLER
	range 2 64
	help
	  Number of buffers available for incoming ACL data.

config BLUETOOTH_L2CAP_RX_MTU
	int "Maximum supported L2CAP MTU for incoming data"
	default 23
	default 65 if BLUETOOTH_SMP
	default 200 if BLUETOOTH_BREDR
	range 23 1300
	range 65 1300 if BLUETOOTH_SMP
	help
	  Maximum size of each incoming L2CAP PDU.
endif # BLUETOOTH_HCI_ACL_FLOW_CONTROL

config BLUETOOTH_L2CAP_TX_BUF_COUNT
	int "Number of L2CAP TX buffers"
	default 3
	range 2 255
	help
	  Number of buffers available for outgoing L2CAP packets.

config BLUETOOTH_L2CAP_TX_MTU
	int "Maximum supported L2CAP MTU for L2CAP TX buffers"
	default 23
	default 65 if BLUETOOTH_SMP
	default 253 if BLUETOOTH_BREDR
	range 23 2000
	range 65 2000 if BLUETOOTH_SMP
	help
	  Maximum L2CAP MTU for L2CAP TX buffers.

config BLUETOOTH_CONN_TX_MAX
	int "Maximum number of pending TX buffers"
	default 7
	default BLUETOOTH_CONTROLLER_TX_BUFFERS if BLUETOOTH_CONTROLLER
	range 1 128
	help
	  Maximum number of pending TX buffers that have not yet
	  been acknowledged by the controller.

config BLUETOOTH_L2CAP_TX_USER_DATA_SIZE
	int "Maximum supported user data size for L2CAP TX buffers"
	default 4
	range 4 65535
	help
	  Maximum supported user data size for L2CAP TX buffers.

config BLUETOOTH_ATT_ENFORCE_FLOW
	bool "Enforce strict flow control semantics for incoming PDUs"
	default y
	default n if BOARD_QEMU_CORTEX_M3 || BOARD_QEMU_X86
	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 BLUETOOTH_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 BLUETOOTH_ATT_TX_MAX
	int "Maximum number of queued outgoing ATT PDUs"
	default 2
	range 1 BLUETOOTH_L2CAP_TX_BUF_COUNT
	help
	  Number of ATT PDUs that can be at a single moment queued for
	  transmission. If the application tries to send more than this
	  amount the calls will block until an existing queued PDU gets
	  sent.

config BLUETOOTH_SMP
	bool "Security Manager Protocol support"
	select BLUETOOTH_RPA
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CMAC
	help
	  This option enables support for the Security Manager Protocol
	  (SMP), making it possible to pair devices over LE.

if BLUETOOTH_SMP
config BLUETOOTH_PRIVACY
	bool "Privacy Feature"
	help
	  Enable local Privacy Feature support. This makes it possible
	  to use Resolvable Private Addresses (RPAs).

config BLUETOOTH_RPA_TIMEOUT
	int "Resolvable Private Address timeout"
	depends on BLUETOOTH_PRIVACY
	default 900
	range 1 65535
	help
	  This option defines how often resolvable private address is rotated.
	  Value is provided in seconds and defaults to 900 seconds (15 minutes).

config BLUETOOTH_SIGNING
	bool "Data signing support"
	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"
	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.

config BLUETOOTH_USE_DEBUG_KEYS
	bool "Enable Security Manager Debug Mode"
	depends on BLUETOOTH_TINYCRYPT_ECC
	help
	  This option places Security Manager in a Debug Mode. In this mode
	  predefined Diffie-Hellman private/public key pair is used as described
	  in Core Specification Vol. 3, Part H, 2.3.5.6.1. This option should
	  only be enabled for debugging and should never be used in production.
	  If this option is enabled anyone is able to decipher encrypted air
	  traffic.

endif # BLUETOOTH_SMP

config BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
	bool "L2CAP Dynamic Channel support"
	depends on BLUETOOTH_SMP
	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"
	help
	  This option enables GATT services to be added dynamically to database.

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

config BLUETOOTH_MAX_PAIRED
	int "Maximum number of paired devices"
	default 1
	range 1 128
	help
	  Maximum number of paired Bluetooth devices. The minimum (and
	  default) number is 1.

endif # BLUETOOTH_CONN

config BLUETOOTH_DEVICE_NAME
	string "Bluetooth device name"
	default "Zephyr"
	help
	  Bluetooth device name. Name can be up to 248 bytes long (excluding
	  NULL termination). Can be empty string.

endif # BLUETOOTH_HCI_HOST

config BLUETOOTH_TINYCRYPT_ECC
	bool "Use TinyCrypt library for ECDH"
	select TINYCRYPT
	select TINYCRYPT_ECC_DH
	depends on BLUETOOTH_HCI_RAW || BLUETOOTH_HCI_HOST
	help
	  If this option is set TinyCrypt library is used for emulating the
	  ECDH HCI commands and events needed by e.g. LE Secure Connections.
	  In builds including the BLE Host, if not set the controller crypto is
	  used for ECDH and if the controller doesn't support the required HCI
	  commands the LE Secure Connections support will be disabled.
	  In builds including the HCI Raw interface and the BLE Controller, this
	  option injects support for the 2 HCI commands required for LE Secure
	  Connections so that Hosts can make use of those.

if BLUETOOTH_DEBUG
config BLUETOOTH_DEBUG_HCI_CORE
	bool "Bluetooth HCI core debug"
	help
	  This option enables debug support for Bluetooth HCI
	  core.

config BLUETOOTH_DEBUG_CONN
	bool "Bluetooth connection debug"
	depends on BLUETOOTH_CONN
	help
	  This option enables debug support for Bluetooth
	  connection handling.

config BLUETOOTH_DEBUG_KEYS
	bool "Bluetooth security keys debug"
	depends on BLUETOOTH_HCI_HOST
	depends on BLUETOOTH_SMP
	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
	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_HCI_HOST
	depends on BLUETOOTH_SMP
	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
	help
	  This option enables SMP self-tests executed on startup
	  to verify security and crypto functions.

config BLUETOOTH_SMP_FORCE_BREDR
	bool "Force Bluetooth SMP over BR/EDR"
	depends on BLUETOOTH_DEBUG_SMP
	help
	  This option enables SMP over BR/EDR even if controller is not
	  supporting BR/EDR Secure Connections. This option is solely for
	  testing and should never be enabled on production devices.

config BLUETOOTH_DEBUG_ATT
	bool "Bluetooth Attribute Protocol (ATT) debug"
	depends on BLUETOOTH_CONN
	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
	help
	  This option enables debug support for the Bluetooth
	  Generic Attribute Profile (GATT).

config BLUETOOTH_DEBUG_RFCOMM
	bool "Bluetooth RFCOMM debug"
	depends on BLUETOOTH_RFCOMM
	help
	  This option enables debug support for the Bluetooth
	  RFCOMM layer.

config BLUETOOTH_DEBUG_HFP_HF
	bool "Bluetooth Hands Free Profile (HFP) debug"
	depends on BLUETOOTH_HFP_HF
	help
	  This option enables debug support for the Bluetooth
	  Hands Free Profile (HFP).

config BLUETOOTH_DEBUG_AVDTP
	bool "Bluetooth AVDTP debug"
	depends on BLUETOOTH_AVDTP
	help
	  This option enables debug support for the Bluetooth AVDTP.

config BLUETOOTH_DEBUG_A2DP
	bool "Bluetooth A2DP debug"
	depends on BLUETOOTH_A2DP
	help
	  This option enables debug support for the Bluetooth
	  A2DP profile.

config BLUETOOTH_DEBUG_SDP
	bool "Bluetooth Service Discovery Protocol (SDP) debug"
	depends on BLUETOOTH_BREDR
	help
		This option enables debug support for the Bluetooth
		Service Discovery Protocol (SDP).

endif # BLUETOOTH_DEBUG

config BLUETOOTH_BREDR
	bool "Bluetooth BR/EDR support [EXPERIMENTAL]"
	depends on BLUETOOTH_HCI_HOST
	select BLUETOOTH_PERIPHERAL
	select BLUETOOTH_CENTRAL
	select BLUETOOTH_SMP
	select BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
	help
	  This option enables Bluetooth BR/EDR support"

if BLUETOOTH_BREDR
config BLUETOOTH_MAX_SCO_CONN
	int "Maximum number of simultaneous SCO connections"
	default 1
	range 1 3
	help
	  Maximum number of simultaneous Bluetooth synchronous connections
	  supported. The minimum (and default) number is 1.

config BLUETOOTH_RFCOMM
	bool "Bluetooth RFCOMM protocol support [EXPERIMENTAL]"
	help
	  This option enables Bluetooth RFCOMM support

config BLUETOOTH_RFCOMM_L2CAP_MTU
	int "L2CAP MTU for RFCOMM frames"
	default BLUETOOTH_RX_BUF_LEN
	default BLUETOOTH_L2CAP_RX_MTU if BLUETOOTH_HCI_ACL_FLOW_CONTROL
	depends on BLUETOOTH_RFCOMM
	range BLUETOOTH_RX_BUF_LEN 32767
	range BLUETOOTH_L2CAP_RX_MTU 32767 if BLUETOOTH_HCI_ACL_FLOW_CONTROL
	help
	  Maximum size of L2CAP PDU for RFCOMM frames.

config BLUETOOTH_HFP_HF
	bool "Bluetooth Handsfree profile HF Role support [EXPERIMENTAL]"
	depends on PRINTK
	select BLUETOOTH_RFCOMM
	help
	  This option enables Bluetooth HF support

config BLUETOOTH_AVDTP
	bool "Bluetooth AVDTP protocol support [EXPERIMENTAL]"
	help
	  This option enables Bluetooth AVDTP support

config BLUETOOTH_A2DP
	bool "Bluetooth A2DP Profile [EXPERIMENTAL]"
	select BLUETOOTH_AVDTP
	help
	  This option enables the A2DP profile

config BLUETOOTH_PAGE_TIMEOUT
	hex "Bluetooth Page Timeout"
	default 0x2000
	range 0x0001 0xffff
	help
	  This option sets the page timeout value. Value is selected as
	  (N * 0.625) ms.

endif # BLUETOOTH_BREDR