1# Bluetooth Isochronous Channel configuration options
2
3# Copyright (c) 2016 Intel Corporation
4# Copyright (c) 2021 Nordic Semiconductor ASA
5# SPDX-License-Identifier: Apache-2.0
6
7config BT_ISO
8	bool
9
10# TODO: Split between client (central) and server (peripheral)
11config BT_ISO_UNICAST
12	bool
13	depends on BT_CONN
14	select BT_ISO
15	help
16	  This option enables support for Bluetooth Unicast
17	  Isochronous channels.
18
19config BT_ISO_PERIPHERAL
20	bool "Bluetooth Isochronous Channel Unicast Peripheral Support [EXPERIMENTAL]"
21	depends on !BT_CTLR || BT_CTLR_PERIPHERAL_ISO_SUPPORT
22	select BT_PERIPHERAL
23	select BT_ISO_UNICAST
24	select EXPERIMENTAL
25	help
26	  This option enables support for Bluetooth Unicast
27	  Isochronous channels for the peripheral role.
28
29config BT_ISO_CENTRAL
30	bool "Bluetooth Isochronous Channel Unicast Central Support [EXPERIMENTAL]"
31	depends on !BT_CTLR || BT_CTLR_CENTRAL_ISO_SUPPORT
32	select BT_CENTRAL
33	select BT_ISO_UNICAST
34	select EXPERIMENTAL
35	help
36	  This option enables support for Bluetooth Broadcast
37	  Isochronous channels for the central role.
38
39config BT_ISO_BROADCAST
40	bool
41	select BT_ISO
42	select BT_EXT_ADV
43
44config BT_ISO_BROADCASTER
45	bool "Bluetooth Isochronous Broadcaster Support [EXPERIMENTAL]"
46	depends on !BT_CTLR || BT_CTLR_ADV_ISO_SUPPORT
47	select BT_ISO_BROADCAST
48	select BT_BROADCASTER
49	select BT_PER_ADV
50	select EXPERIMENTAL
51	help
52	  This option enables support for the Bluetooth Isochronous Broadcaster.
53
54config BT_ISO_SYNC_RECEIVER
55	bool "Bluetooth Isochronous Synchronized Receiver Support [EXPERIMENTAL]"
56	depends on !BT_CTLR || BT_CTLR_SYNC_ISO_SUPPORT
57	select BT_ISO_BROADCAST
58	select BT_OBSERVER
59	select BT_PER_ADV_SYNC
60	select EXPERIMENTAL
61	help
62	  This option enables support for the Bluetooth Isochronous
63	  Synchronized Receiver.
64
65if BT_ISO
66
67config BT_ISO_MAX_CHAN
68	int "Maximum number of simultaneous ISO channels"
69	depends on BT_ISO
70	default BT_MAX_CONN if BT_CONN
71	default 1
72	range 1 64
73	help
74	  Maximum number of simultaneous Bluetooth isochronous channels
75	  supported.
76
77config BT_ISO_TX_BUF_COUNT
78	int "Number of Isochronous TX buffers"
79	default 1
80	range 1 255
81	help
82	  Number of buffers available for outgoing Isochronous channel SDUs.
83
84config BT_ISO_TX_FRAG_COUNT
85	int "Number of ISO TX fragment buffers"
86	default 2
87	range 0 255
88	help
89	  Number of buffers available for fragments of TX buffers. Warning:
90	  setting this to 0 means that the application must ensure that
91	  queued TX buffers never need to be fragmented, i.e. that the
92	  controller's buffer size is large enough. If this is not ensured,
93	  and there are no dedicated fragment buffers, a deadlock may occur.
94	  In most cases the default value of 2 is a safe bet.
95
96config BT_ISO_TX_MTU
97	int "Maximum supported MTU for Isochronous TX buffers"
98	default 251
99	range 1 4095
100	help
101	  Maximum MTU for Isochronous channels TX buffers.
102	  This is the actual data payload. It doesn't include the optional
103	  HCI ISO Data packet fields (e.g. `struct bt_hci_iso_ts_data_hdr`).
104	  Set this value to 247 to fit 247 bytes of data within a single
105	  HCI ISO Data packet with a size of 255, without utilizing timestamps.
106
107config BT_ISO_RX_BUF_COUNT
108	int "Number of Isochronous RX buffers"
109	default 1
110	range 1 255
111	help
112	  Number of buffers available for incoming Isochronous channel SDUs.
113
114config BT_ISO_RX_MTU
115	int "Maximum supported MTU for Isochronous RX buffers"
116	default 251
117	range 23 4095
118	help
119	  Maximum MTU for Isochronous channels RX buffers.
120	  This is the actual data payload. It doesn't include the optional
121	  HCI ISO Data packet fields (e.g. `struct bt_hci_iso_ts_data_hdr`)
122
123config BT_ISO_ADVANCED
124	bool "Advanced ISO parameters"
125	help
126	  Enabling advanced ISO parameters will allow the use of the ISO test
127	  parameters for creating a CIG or a BIG. These test parameters were
128	  intended for testing, but can be used to allow the host to set more
129	  settings that are otherwise usually controlled by the controller.
130
131if BT_ISO_UNICAST
132
133config BT_ISO_MAX_CIG
134	int "Maximum number of Connected Isochronous Groups (CIGs) to support"
135	default 1
136	help
137	  Maximum number of CIGs that are supported by the host. A CIG can be
138	  used for either transmitting or receiving.
139
140endif # BT_ISO_UNICAST
141
142if BT_ISO_BROADCAST
143
144config BT_ISO_MAX_BIG
145	int "Maximum number of Broadcast Isochronous Groups (BIGs) to support"
146	default 1
147	help
148	  Maximum number of BIGs that are supported by the host. A BIG can be
149	  used for either transmitting or receiving, but not at the same time.
150
151endif # BT_ISO_BROADCAST
152endif # BT_ISO
153