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