Linux preempt-rt

Check our new training course

Real-Time Linux with PREEMPT_RT

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

Bootlin logo

Elixir Cross Referencer

  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
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
# 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 BT_HCI_HOST
	# Virtual/hidden option to make the conditions more intuitive
	bool
	default y
	depends on !BT_HCI_RAW
	select POLL

config BT_HCI_CMD_COUNT
	int "Number of HCI command buffers"
	default 2
	range 2 64
	help
	  Number of buffers available for HCI commands.

config BT_RX_BUF_COUNT
	int "Number of HCI RX buffers"
	default 3 if BT_RECV_IS_RX_THREAD
	default 20 if (BT_MESH && !BT_DISCARDABLE_BUF_COUNT)
	default 10
	range 2 255
	help
	  Number of buffers available for incoming ACL packets or HCI events
	  from the controller.

config BT_RX_BUF_LEN
	int "Maximum supported HCI RX buffer length"
	default 264 if BT_BREDR
	default 77 if BT_MESH_PROXY
	default 76
	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 BT_DISCARDABLE_BUF_COUNT
	int "Number of discardable event buffers"
	range 1 255
	default 20 if BT_MESH
	default 3
	depends on BT_H4 || BT_CTLR
	help
	  Number of buffers in a separate buffer pool for events which
	  the HCI driver considers discardable. Examples of such events
	  could be e.g. Advertising Reports. The benefit of having such
	  a pool means that the if there is a heavy inflow of such events
	  it will not cause the allocation for other critical events to
	  block and may even eliminate deadlocks in some cases.

config BT_HCI_TX_STACK_SIZE
	# NOTE: This value is derived from other symbols and should not be
	# user-configurable. Do not give it a prompt.
	int
	default 512 if BT_H4
	default 512 if BT_H5
	default 416 if BT_SPI
	default 940 if BT_CTLR && (BT_LL_SW || BT_LL_SW_SPLIT) && NO_OPTIMIZATIONS
	default 1024 if BT_CTLR && (BT_LL_SW || BT_LL_SW_SPLIT) && BT_CENTRAL
	default 640 if BT_CTLR && (BT_LL_SW || BT_LL_SW_SPLIT)
	default 512 if BT_USERCHAN
	# Even if no driver is selected the following default is still
	# needed e.g. for unit tests. This default will also server as
	# the worst-case stack size if an out-of-tree controller is used.
	default 1024
	help
	  Stack size needed for executing bt_send with specified driver

config BT_HCI_TX_PRIO
	# Hidden option for Co-Operative Tx thread priority
	int
	default 7

config BT_HCI_RESERVE
	int
	default 0 if BT_H4
	default 1 if BT_H5
	default 1 if BT_SPI
	default 1 if BT_USERCHAN
	# Even if no driver is selected the following default is still
	# needed e.g. for unit tests.
	default 0
	help
	  Headroom that the driver needs for sending and receiving buffers. Add a
	  new 'default' entry for each new driver.

config BT_RECV_IS_RX_THREAD
	# Hidden option set by the HCI driver to indicate that there's
	# no need for the host to have its own RX thread.
	# It is then the responsibility of the HCI driver to call bt_recv_prio
	# from a higher priority context than bt_recv in order to avoid deadlock.
	# If the host has its own RX thread it is safe to call bt_recv and
	# bt_recv_prio from the same priority context.
	bool

config BT_RX_STACK_SIZE
	int "Size of the receiving thread stack"
	depends on BT_HCI_HOST || BT_RECV_IS_RX_THREAD
	default 512 if BT_HCI_RAW
	default 2048 if BT_MESH
	default 2200 if BT_SETTINGS
	default 1024
	range 512 65536 if BT_HCI_RAW
	range 1100 65536 if BT_MESH
	range 1024 65536
	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.

config BT_RX_PRIO
	# Hidden option for Co-Operative Rx thread priority
	int
	depends on BT_HCI_HOST || BT_RECV_IS_RX_THREAD
	default 8

if BT_HCI_HOST

source "subsys/bluetooth/host/mesh/Kconfig"

config BT_HOST_CRYPTO
	# Hidden option that compiles in random number generation and AES
	# encryption support using TinyCrypt library if this is not provided
	# by the controller implementation.
	bool
	default y if !BT_CTLR_CRYPTO
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_SHA256
	select TINYCRYPT_SHA256_HMAC
	select TINYCRYPT_SHA256_HMAC_PRNG

config BT_SETTINGS
	bool "Store Bluetooth state and configuration persistently"
	depends on SETTINGS && PRINTK
	select MPU_ALLOW_FLASH_WRITE if ARM_MPU
	help
	  When selected, the Bluetooth stack will take care of storing
	  (and restoring) the Bluetooth state (e.g. pairing keys) and
	  configuration persistently in flash.

	  When this option has been enabled, it's important that the
	  application makes a call to settings_load() after having done
	  all necessary initialization (e.g. calling bt_enable). The
	  reason settings_load() is handled externally to the stack, is
	  that there may be other subsystems using the settings API, in
	  which case it's more efficient to load all settings in one go,
	  instead of each subsystem doing it independently.

if BT_SETTINGS
config BT_SETTINGS_CCC_STORE_ON_WRITE
	bool "Store CCC value immediately after it has been written"
	help
	  Store Client Configuration Characteristic value right after it has
	  been updated.

	  By default, CCC is only stored on disconnection.
	  Choosing this option is safer for battery-powered devices or devices
	  that expect to be reset suddenly. However, it requires additional
	  workqueue stack space.
endif # BT_SETTINGS

if BT_CONN

if BT_HCI_ACL_FLOW_CONTROL
config BT_ACL_RX_COUNT
	int "Number of incoming ACL data buffers"
	default BT_CTLR_RX_BUFFERS if BT_CTLR
	default 6
	range 1 64
	help
	  Number of buffers available for incoming ACL data.

config BT_L2CAP_RX_MTU
	int "Maximum supported L2CAP MTU for incoming data"
	default 200 if BT_BREDR
	default 65 if BT_SMP
	default 23
	range 65 1300 if BT_SMP
	range 23 1300
	help
	  Maximum size of each incoming L2CAP PDU.
endif # BT_HCI_ACL_FLOW_CONTROL

config BT_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 BT_L2CAP_TX_FRAG_COUNT
	int "Number of L2CAP TX fragment buffers"
	default 2
	range 0 255
	help
	  Number of buffers available for fragments of TX buffers. Warning:
	  setting this to 0 means that the application must ensure that
	  queued TX buffers never need to be fragmented, i.e. that the
	  controller's buffer size is large enough. If this is not ensured,
	  and there are no dedicated fragment buffers, a deadlock may occur.
	  In most cases the default value of 2 is a safe bet.

config BT_L2CAP_TX_MTU
	int "Maximum supported L2CAP MTU for L2CAP TX buffers"
	default 253 if BT_BREDR
	default 65 if BT_SMP
	default 23
	range 65 2000 if BT_SMP
	range 23 2000
	help
	  Maximum L2CAP MTU for L2CAP TX buffers.

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

config BT_AUTO_PHY_UPDATE
	bool "Auto-initiate PHY Update Procedure"
	depends on BT_PHY_UPDATE
	default y
	help
	  Initiate PHY Update Procedure on connection establishment.

	  Disable this if you want PHY Update Procedure feature supported but
	  want to rely on remote device to initiate the procedure at its
	  discretion.

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

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

config BT_RPA_TIMEOUT
	int "Resolvable Private Address timeout"
	depends on BT_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 BT_SIGNING
	bool "Data signing support"
	help
	  This option enables data signing which is used for transferring
	  authenticated data in an unencrypted connection.

config BT_SMP_SC_PAIR_ONLY
	bool "Disable legacy pairing"
	help
	  This option disables LE legacy pairing and forces LE secure connection
	  pairing. All Security Mode 1 levels can be used with legacy pairing
	  disabled, but pairing with devices that do not support secure
	  connections pairing will not be supported.
	  To force a higher security level use "Secure Connections Only Mode"

config BT_SMP_SC_ONLY
	bool "Secure Connections Only Mode"
	select BT_SMP_SC_PAIR_ONLY
	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 BT_FIXED_PASSKEY
	bool "Use a fixed passkey for pairing"
	help
	  With this option enabled, the application will be able to call the
	  bt_passkey_set() API to set a fixed passkey. If set, the
	  pairing_confim() callback will be called for all incoming pairings.

config BT_USE_DEBUG_KEYS
	bool "Enable Security Manager Debug Mode"
	depends on BT_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.

config BT_BONDABLE
	bool "Bondable Mode"
	default y
	help
	  This option enables support for Bondable Mode. In this mode,
	  Bonding flag in AuthReq of SMP Pairing Request/Response will be set
	  indicating the support for this mode.

endif # BT_SMP

config BT_L2CAP_DYNAMIC_CHANNEL
	bool "L2CAP Dynamic Channel support"
	depends on BT_SMP
	help
	  This option enables support for LE Connection oriented Channels,
	  allowing the creation of dynamic L2CAP Channels.

menu "ATT and GATT Options"

config BT_ATT_ENFORCE_FLOW
	bool "Enforce strict flow control semantics for incoming PDUs"
	default y if !(BOARD_QEMU_CORTEX_M3 || BOARD_QEMU_X86 || BOARD_NATIVE_POSIX)
	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 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_TX_MAX
	int "Maximum number of queued outgoing ATT PDUs"
	default 2
	range 1 BT_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 BT_GATT_CACHING
	bool "GATT Caching support"
	default y
	select TINYCRYPT
	select TINYCRYPT_AES
	select TINYCRYPT_AES_CMAC
	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.

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.

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.

endmenu

config BT_MAX_PAIRED
	int "Maximum number of paired devices"
	default 0 if !BT_SMP
	default 1
	range 0 128
	help
	  Maximum number of paired Bluetooth devices. The minimum (and
	  default) number is 1.

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
	  and sending request for connection parameters update after GAP
	  recommended 5 seconds of connection as peripheral. 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 65535
	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 65535
	help
	  Range 3200 to 65534 is invalid. 65535 represents no specific value.

config BT_PERIPHERAL_PREF_SLAVE_LATENCY
	int "Peripheral preferred slave latency in Connection Intervals"
	default 0
	range 0 499

config BT_PERIPHERAL_PREF_TIMEOUT
	int "Peripheral preferred supervision timeout in 10ms units"
	default 42
	range 10 65535
	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_CREATE_CONN_TIMEOUT
        int "Timeout for pending LE Create Connection command in seconds"
        default 3
        range 1 65535
endif # BT_CONN

if BT_OBSERVER
config BT_BACKGROUND_SCAN_INTERVAL
	int "Scan interval used for background scanning in 0.625 ms units"
	default 2048
	range 4 16384
config BT_BACKGROUND_SCAN_WINDOW
	int "Scan window used for background scanning in 0.625 ms units"
	default 18
	range 4 16384
endif # BT_OBSERVER

config BT_SCAN_WITH_IDENTITY
	bool "Perform active scanning using local identity address"
	depends on !BT_PRIVACY && (BT_CENTRAL || BT_OBSERVER)
	help
	  Enable this if you want to perform active scanning using the local
	  identity address as the scanner address. By default the stack will
	  always use a non-resolvable private address (NRPA) in order to avoid
	  disclosing local identity information. However, if the use case
	  requires disclosing it then enable this option.

config BT_DEVICE_NAME_DYNAMIC
	bool "Allow to set Bluetooth device name on runtime"
	help
	  Enabling this option allows for runtime configuration of Bluetooth
	  device name.

config BT_DEVICE_NAME_MAX
	int "Maximum size in bytes for device name"
	depends on BT_DEVICE_NAME_DYNAMIC
	default 28
	range 2 248
	help
	  Bluetooth device name storage size. Storage can be up to 248 bytes
	  long (excluding NULL termination).

config BT_DEVICE_NAME_GATT_WRITABLE
	bool "Allow to write name by remote GATT clients"
	depends on BT_CONN && BT_DEVICE_NAME_DYNAMIC
	default y
	help
	  Enabling this option allows remote GATT clients to write to device
	  name GAP characteristic.

config BT_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.

config BT_DEVICE_APPEARANCE
	int "Bluetooth device appearance"
	range 0 65535
	default 0
	help
	  Bluetooth device appearance. For the list of possible values please
	  consult the following link:
	  https://www.bluetooth.com/specifications/assigned-numbers

config BT_ID_MAX
	int "Maximum number of local identities"
	range 1 10
	default 1
	help
	  Maximum number of supported local identity addresses. For most
	  products this is safe to leave as the default value (1).

endif # BT_HCI_HOST

config BT_ECC
	bool "Enable ECDH key generation support"
	help
	  This option adds support for ECDH HCI commands.

config BT_TINYCRYPT_ECC
	bool "Use TinyCrypt library for ECDH"
	select TINYCRYPT
	select TINYCRYPT_ECC_DH
	depends on BT_ECC && (BT_HCI_RAW || BT_HCI_HOST)
	default y if BT_CTLR
	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. The option defaults
	  to enabled for a combined build with Zephyr's own controller, since it
	  does not have any special ECC support itself (at least not currently).

if BT_DEBUG
config BT_DEBUG_SETTINGS
	bool "Bluetooth storage debug"
	depends on BT_SETTINGS
	help
	  This option enables debug support for Bluetooth storage.

config BT_DEBUG_HCI_CORE
	bool "Bluetooth HCI core debug"
	help
	  This option enables debug support for Bluetooth HCI
	  core.

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

config BT_DEBUG_KEYS
	bool "Bluetooth security keys debug"
	depends on BT_HCI_HOST
	depends on BT_SMP
	help
	  This option enables debug support for the handling of
	  Bluetooth security keys.

config BT_DEBUG_L2CAP
	bool "Bluetooth L2CAP debug"
	depends on BT_CONN
	help
	  This option enables debug support for the Bluetooth
	  L2ACP layer.

config BT_DEBUG_SMP
	bool "Bluetooth Security Manager Protocol (SMP) debug"
	depends on BT_HCI_HOST
	depends on BT_SMP
	help
	  This option enables debug support for the Bluetooth
	  Security Manager Protocol (SMP).

config BT_SMP_SELFTEST
	bool "Bluetooth SMP self tests executed on init"
	depends on BT_DEBUG_SMP
	help
	  This option enables SMP self-tests executed on startup
	  to verify security and crypto functions.

config BT_SMP_FORCE_BREDR
	bool "Force Bluetooth SMP over BR/EDR"
	depends on BT_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 BT_DEBUG_ATT
	bool "Bluetooth Attribute Protocol (ATT) debug"
	depends on BT_CONN
	help
	  This option enables debug support for the Bluetooth
	  Attribute Protocol (ATT).

config BT_DEBUG_GATT
	bool "Bluetooth Generic Attribute Profile (GATT) debug"
	depends on BT_CONN
	help
	  This option enables debug support for the Bluetooth
	  Generic Attribute Profile (GATT).

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

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

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

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

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

endif # BT_DEBUG

config BT_TESTING
	bool "Bluetooth Testing"
	help
	  This option enables custom Bluetooth testing interface.
	  Shall only be used for testing purposes.

config BT_BREDR
	bool "Bluetooth BR/EDR support [EXPERIMENTAL]"
	depends on BT_HCI_HOST
	select BT_PERIPHERAL
	select BT_CENTRAL
	select BT_SMP
	select BT_L2CAP_DYNAMIC_CHANNEL
	help
	  This option enables Bluetooth BR/EDR support

if BT_BREDR
config BT_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 BT_RFCOMM
	bool "Bluetooth RFCOMM protocol support [EXPERIMENTAL]"
	help
	  This option enables Bluetooth RFCOMM support

config BT_RFCOMM_L2CAP_MTU
	int "L2CAP MTU for RFCOMM frames"
	default BT_L2CAP_RX_MTU if BT_HCI_ACL_FLOW_CONTROL
	default BT_RX_BUF_LEN
	depends on BT_RFCOMM
	range BT_L2CAP_RX_MTU 32767 if BT_HCI_ACL_FLOW_CONTROL
	range BT_RX_BUF_LEN 32767
	help
	  Maximum size of L2CAP PDU for RFCOMM frames.

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

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

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

config BT_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 # BT_BREDR