1 /**
2  * @file
3  * @brief Header for Bluetooth BAP LC3 presets.
4  *
5  * Copyright (c) 2023-2024 Nordic Semiconductor ASA
6  *
7  * SPDX-License-Identifier: Apache-2.0
8  */
9 
10 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_LC3_PRESET_
11 #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_LC3_PRESET_
12 
13 /**
14  * @brief Basic Audio Profile (BAP) LC3 Presets
15  *
16  * @defgroup bt_bap_lc3_preset Basic Audio Profile (BAP) LC3 Presets
17  *
18  * @since 3.0
19  * @version 0.8.0
20  *
21  * @ingroup bluetooth
22  * @{
23  *
24  * These APIs provide preset for codec configuration and QoS based on values supplied by the
25  * codec configuration tables in the BAP specification.
26  *
27  */
28 
29 #include <zephyr/bluetooth/audio/audio.h>
30 #include <zephyr/bluetooth/audio/bap.h>
31 #include <zephyr/bluetooth/audio/lc3.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 /** Struct to hold a BAP defined LC3 preset */
38 struct bt_bap_lc3_preset {
39 	/** The LC3 Codec */
40 	struct bt_audio_codec_cfg codec_cfg;
41 	/** The BAP spec defined QoS values */
42 	struct bt_bap_qos_cfg qos;
43 };
44 
45 /** Helper to declare an LC3 preset structure */
46 #define BT_BAP_LC3_PRESET(_codec, _qos)                                                            \
47 	{                                                                                          \
48 		.codec_cfg = _codec, .qos = _qos,                                                  \
49 	}
50 
51 /* LC3 Unicast presets defined by table 5.2 in the BAP v1.0 specification */
52 
53 /**
54  * @brief Helper to declare LC3 Unicast 8_1_1 codec configuration
55  *
56  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
57  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
58  */
59 #define BT_BAP_LC3_UNICAST_PRESET_8_1_1(_loc, _stream_context)                                     \
60 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
61 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \
62 						    _stream_context),                              \
63 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 2u, 8u, 40000u))
64 
65 /**
66  * @brief Helper to declare LC3 Unicast 8_2_1 codec configuration
67  *
68  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
69  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
70  */
71 #define BT_BAP_LC3_UNICAST_PRESET_8_2_1(_loc, _stream_context)                                     \
72 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
73 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1,  \
74 						    _stream_context),                              \
75 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 2u, 10u, 40000u))
76 
77 /**
78  * @brief Helper to declare LC3 Unicast 16_1_1 codec configuration
79  *
80  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
81  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
82  */
83 #define BT_BAP_LC3_UNICAST_PRESET_16_1_1(_loc, _stream_context)                                    \
84 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
85 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \
86 						    _stream_context),                              \
87 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 2u, 8u, 40000u))
88 
89 /**
90  * @brief Helper to declare LC3 Unicast 16_2_1 codec configuration
91  *
92  * Mandatory to support as both unicast client and server
93  *
94  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
95  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
96  */
97 #define BT_BAP_LC3_UNICAST_PRESET_16_2_1(_loc, _stream_context)                                    \
98 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
99 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1,  \
100 						    _stream_context),                              \
101 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 2u, 10u, 40000u))
102 
103 /**
104  * @brief Helper to declare LC3 Unicast 24_1_1 codec configuration
105  *
106  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
107  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
108  */
109 #define BT_BAP_LC3_UNICAST_PRESET_24_1_1(_loc, _stream_context)                                    \
110 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
111 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \
112 						    _stream_context),                              \
113 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 2u, 8u, 40000u))
114 
115 /**
116  * @brief Helper to declare LC3 Unicast 24_2_1 codec configuration
117  *
118  * Mandatory to support as unicast server
119  *
120  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
121  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
122  */
123 #define BT_BAP_LC3_UNICAST_PRESET_24_2_1(_loc, _stream_context)                                    \
124 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
125 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1,  \
126 						    _stream_context),                              \
127 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 2u, 10u, 40000u))
128 
129 /**
130  * @brief Helper to declare LC3 Unicast 32_1_1 codec configuration
131  *
132  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
133  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
134  */
135 #define BT_BAP_LC3_UNICAST_PRESET_32_1_1(_loc, _stream_context)                                    \
136 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
137 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
138 						    _stream_context),                              \
139 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 2u, 8u, 40000u))
140 
141 /**
142  * @brief Helper to declare LC3 Unicast 32_2_1 codec configuration
143  *
144  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
145  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
146  */
147 #define BT_BAP_LC3_UNICAST_PRESET_32_2_1(_loc, _stream_context)                                    \
148 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
149 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1,  \
150 						    _stream_context),                              \
151 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 2u, 10u, 40000u))
152 
153 /**
154  * @brief Helper to declare LC3 Unicast 441_1_1 codec configuration
155  *
156  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
157  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
158  */
159 #define BT_BAP_LC3_UNICAST_PRESET_441_1_1(_loc, _stream_context)                                   \
160 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
161 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \
162 						    _stream_context),                              \
163 			  BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 5u, 24u, 40000u))
164 
165 /**
166  * @brief Helper to declare LC3 Unicast 441_2_1 codec configuration
167  *
168  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
169  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
170  */
171 #define BT_BAP_LC3_UNICAST_PRESET_441_2_1(_loc, _stream_context)                                   \
172 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
173 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \
174 						    _stream_context),                              \
175 			  BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 5u, 31u, 40000u))
176 
177 /**
178  * @brief Helper to declare LC3 Unicast 48_1_1 codec configuration
179  *
180  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
181  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
182  */
183 #define BT_BAP_LC3_UNICAST_PRESET_48_1_1(_loc, _stream_context)                                    \
184 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
185 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
186 						    _stream_context),                              \
187 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 5u, 15u, 40000u))
188 
189 /**
190  * @brief Helper to declare LC3 Unicast 48_2_1 codec configuration
191  *
192  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
193  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
194  */
195 #define BT_BAP_LC3_UNICAST_PRESET_48_2_1(_loc, _stream_context)                                    \
196 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
197 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
198 						    _stream_context),                              \
199 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 5u, 20u, 40000u))
200 
201 /**
202  * @brief Helper to declare LC3 Unicast 48_3_1 codec configuration
203  *
204  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
205  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
206  */
207 #define BT_BAP_LC3_UNICAST_PRESET_48_3_1(_loc, _stream_context)                                    \
208 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
209 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
210 						    _stream_context),                              \
211 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 5u, 15u, 40000u))
212 
213 /**
214  * @brief Helper to declare LC3 Unicast 48_4_1 codec configuration
215  *
216  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
217  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
218  */
219 #define BT_BAP_LC3_UNICAST_PRESET_48_4_1(_loc, _stream_context)                                    \
220 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
221 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
222 						    _stream_context),                              \
223 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 5u, 20u, 40000u))
224 
225 /**
226  * @brief Helper to declare LC3 Unicast 8_5_1 codec configuration
227  *
228  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
229  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
230  */
231 #define BT_BAP_LC3_UNICAST_PRESET_48_5_1(_loc, _stream_context)                                    \
232 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
233 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u,   \
234 						    1, _stream_context),                           \
235 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 5u, 15u, 40000u))
236 
237 /**
238  * @brief Helper to declare LC3 Unicast 48_6_1 codec configuration
239  *
240  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
241  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
242  */
243 #define BT_BAP_LC3_UNICAST_PRESET_48_6_1(_loc, _stream_context)                                    \
244 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
245 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \
246 						    _stream_context),                              \
247 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 5u, 20u, 40000u))
248 
249 /**
250  * @brief Helper to declare LC3 Unicast 8_1_2 codec configuration
251  *
252  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
253  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
254  */
255 /* Following presets are for unicast high reliability audio data */
256 #define BT_BAP_LC3_UNICAST_PRESET_8_1_2(_loc, _stream_context)                                     \
257 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
258 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \
259 						    _stream_context),                              \
260 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 13u, 75u, 40000u))
261 
262 /**
263  * @brief Helper to declare LC3 Unicast 8_2_2 codec configuration
264  *
265  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
266  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
267  */
268 #define BT_BAP_LC3_UNICAST_PRESET_8_2_2(_loc, _stream_context)                                     \
269 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
270 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1,  \
271 						    _stream_context),                              \
272 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 13u, 95u, 40000u))
273 
274 /**
275  * @brief Helper to declare LC3 Unicast 16_1_2 codec configuration
276  *
277  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
278  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
279  */
280 #define BT_BAP_LC3_UNICAST_PRESET_16_1_2(_loc, _stream_context)                                    \
281 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
282 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \
283 						    _stream_context),                              \
284 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 13u, 75u, 40000u))
285 
286 /**
287  * @brief Helper to declare LC3 Unicast 16_2_2 codec configuration
288  *
289  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
290  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
291  */
292 #define BT_BAP_LC3_UNICAST_PRESET_16_2_2(_loc, _stream_context)                                    \
293 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
294 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1,  \
295 						    _stream_context),                              \
296 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 13u, 95u, 40000u))
297 
298 /**
299  * @brief Helper to declare LC3 Unicast 24_1_2 codec configuration
300  *
301  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
302  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
303  */
304 #define BT_BAP_LC3_UNICAST_PRESET_24_1_2(_loc, _stream_context)                                    \
305 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
306 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \
307 						    _stream_context),                              \
308 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 13u, 75u, 40000u))
309 
310 /**
311  * @brief Helper to declare LC3 Unicast 24_2_2 codec configuration
312  *
313  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
314  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
315  */
316 #define BT_BAP_LC3_UNICAST_PRESET_24_2_2(_loc, _stream_context)                                    \
317 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
318 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1,  \
319 						    _stream_context),                              \
320 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 13u, 95u, 40000u))
321 
322 /**
323  * @brief Helper to declare LC3 Unicast 32_1_2 codec configuration
324  *
325  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
326  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
327  */
328 #define BT_BAP_LC3_UNICAST_PRESET_32_1_2(_loc, _stream_context)                                    \
329 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
330 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
331 						    _stream_context),                              \
332 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 13u, 75u, 40000u))
333 
334 /**
335  * @brief Helper to declare LC3 Unicast 32_2_2 codec configuration
336  *
337  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
338  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
339  */
340 #define BT_BAP_LC3_UNICAST_PRESET_32_2_2(_loc, _stream_context)                                    \
341 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
342 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1,  \
343 						    _stream_context),                              \
344 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 13u, 95u, 40000u))
345 
346 /**
347  * @brief Helper to declare LC3 Unicast 441_1_2 codec configuration
348  *
349  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
350  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
351  */
352 #define BT_BAP_LC3_UNICAST_PRESET_441_1_2(_loc, _stream_context)                                   \
353 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
354 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \
355 						    _stream_context),                              \
356 			  BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 13u, 80u, 40000u))
357 
358 /**
359  * @brief Helper to declare LC3 Unicast 441_2_2 codec configuration
360  *
361  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
362  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
363  */
364 #define BT_BAP_LC3_UNICAST_PRESET_441_2_2(_loc, _stream_context)                                   \
365 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
366 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \
367 						    _stream_context),                              \
368 			  BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 13u, 85u, 40000u))
369 
370 /**
371  * @brief Helper to declare LC3 Unicast 48_1_2 codec configuration
372  *
373  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
374  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
375  */
376 #define BT_BAP_LC3_UNICAST_PRESET_48_1_2(_loc, _stream_context)                                    \
377 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
378 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
379 						    _stream_context),                              \
380 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 13u, 75u, 40000u))
381 
382 /**
383  * @brief Helper to declare LC3 Unicast 48_2_2 codec configuration
384  *
385  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
386  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
387  */
388 #define BT_BAP_LC3_UNICAST_PRESET_48_2_2(_loc, _stream_context)                                    \
389 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
390 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
391 						    _stream_context),                              \
392 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 13u, 95u, 40000u))
393 
394 /**
395  * @brief Helper to declare LC3 Unicast 48_3_2 codec configuration
396  *
397  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
398  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
399  */
400 #define BT_BAP_LC3_UNICAST_PRESET_48_3_2(_loc, _stream_context)                                    \
401 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
402 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
403 						    _stream_context),                              \
404 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 13u, 75u, 40000u))
405 
406 /**
407  * @brief Helper to declare LC3 Unicast 48_4_2 codec configuration
408  *
409  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
410  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
411  */
412 #define BT_BAP_LC3_UNICAST_PRESET_48_4_2(_loc, _stream_context)                                    \
413 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
414 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
415 						    _stream_context),                              \
416 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 13u, 100u, 40000u))
417 
418 /**
419  * @brief Helper to declare LC3 Unicast 48_5_2 codec configuration
420  *
421  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
422  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
423  */
424 #define BT_BAP_LC3_UNICAST_PRESET_48_5_2(_loc, _stream_context)                                    \
425 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
426 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u,   \
427 						    1, _stream_context),                           \
428 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 13u, 75u, 40000u))
429 
430 /**
431  * @brief Helper to declare LC3 Unicast 48_6_2 codec configuration
432  *
433  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
434  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
435  */
436 #define BT_BAP_LC3_UNICAST_PRESET_48_6_2(_loc, _stream_context)                                    \
437 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
438 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \
439 						    _stream_context),                              \
440 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 13u, 100u, 40000u))
441 
442 /**
443  * @brief Helper to declare LC3 Broadcast 8_1_1 codec configuration
444  *
445  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
446  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
447  */
448 /* LC3 Broadcast presets defined by table 6.4 in the BAP v1.0 specification */
449 #define BT_BAP_LC3_BROADCAST_PRESET_8_1_1(_loc, _stream_context)                                   \
450 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
451 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \
452 						    _stream_context),                              \
453 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 2u, 8u, 40000u))
454 
455 /**
456  * @brief Helper to declare LC3 Broadcast 8_2_1 codec configuration
457  *
458  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
459  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
460  */
461 #define BT_BAP_LC3_BROADCAST_PRESET_8_2_1(_loc, _stream_context)                                   \
462 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
463 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1,  \
464 						    _stream_context),                              \
465 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 2u, 10u, 40000u))
466 
467 /**
468  * @brief Helper to declare LC3 Broadcast 16_1_1 codec configuration
469  *
470  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
471  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
472  */
473 #define BT_BAP_LC3_BROADCAST_PRESET_16_1_1(_loc, _stream_context)                                  \
474 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
475 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \
476 						    _stream_context),                              \
477 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 2u, 8u, 40000u))
478 
479 /**
480  * @brief Helper to declare LC3 Broadcast 16_2_1 codec configuration
481  *
482  * Mandatory to support as both broadcast source and sink
483  *
484  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
485  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
486  */
487 #define BT_BAP_LC3_BROADCAST_PRESET_16_2_1(_loc, _stream_context)                                  \
488 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
489 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1,  \
490 						    _stream_context),                              \
491 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 2u, 10u, 40000u))
492 
493 /**
494  * @brief Helper to declare LC3 Broadcast 24_1_1 codec configuration
495  *
496  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
497  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
498  */
499 #define BT_BAP_LC3_BROADCAST_PRESET_24_1_1(_loc, _stream_context)                                  \
500 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
501 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \
502 						    _stream_context),                              \
503 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 2u, 8u, 40000u))
504 
505 /**
506  * @brief Helper to declare LC3 Broadcast 24_2_1 codec configuration
507  *
508  * Mandatory to support as broadcast sink
509  *
510  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
511  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
512  */
513 #define BT_BAP_LC3_BROADCAST_PRESET_24_2_1(_loc, _stream_context)                                  \
514 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
515 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1,  \
516 						    _stream_context),                              \
517 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 2u, 10u, 40000u))
518 
519 /**
520  * @brief Helper to declare LC3 Broadcast 32_1_1 codec configuration
521  *
522  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
523  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
524  */
525 #define BT_BAP_LC3_BROADCAST_PRESET_32_1_1(_loc, _stream_context)                                  \
526 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
527 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
528 						    _stream_context),                              \
529 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 2u, 8u, 40000u))
530 
531 /**
532  * @brief Helper to declare LC3 Broadcast 32_2_1 codec configuration
533  *
534  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
535  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
536  */
537 #define BT_BAP_LC3_BROADCAST_PRESET_32_2_1(_loc, _stream_context)                                  \
538 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
539 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1,  \
540 						    _stream_context),                              \
541 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 2u, 10u, 40000u))
542 
543 /**
544  * @brief Helper to declare LC3 Broadcast 441_1_1 codec configuration
545  *
546  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
547  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
548  */
549 #define BT_BAP_LC3_BROADCAST_PRESET_441_1_1(_loc, _stream_context)                                 \
550 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
551 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \
552 						    _stream_context),                              \
553 			  BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 4u, 24u, 40000u))
554 
555 /**
556  * @brief Helper to declare LC3 Broadcast 441_2_1 codec configuration
557  *
558  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
559  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
560  */
561 #define BT_BAP_LC3_BROADCAST_PRESET_441_2_1(_loc, _stream_context)                                 \
562 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
563 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \
564 						    _stream_context),                              \
565 			  BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 4u, 31u, 40000u))
566 
567 /**
568  * @brief Helper to declare LC3 Broadcast 48_1_1 codec configuration
569  *
570  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
571  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
572  */
573 #define BT_BAP_LC3_BROADCAST_PRESET_48_1_1(_loc, _stream_context)                                  \
574 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
575 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
576 						    _stream_context),                              \
577 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 4u, 15u, 40000u))
578 
579 /**
580  * @brief Helper to declare LC3 Broadcast 48_2_1 codec configuration
581  *
582  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
583  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
584  */
585 #define BT_BAP_LC3_BROADCAST_PRESET_48_2_1(_loc, _stream_context)                                  \
586 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
587 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
588 						    _stream_context),                              \
589 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 4u, 20u, 40000u))
590 
591 /**
592  * @brief Helper to declare LC3 Broadcast 48_3_1 codec configuration
593  *
594  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
595  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
596  */
597 #define BT_BAP_LC3_BROADCAST_PRESET_48_3_1(_loc, _stream_context)                                  \
598 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
599 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
600 						    _stream_context),                              \
601 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 4u, 15u, 40000u))
602 
603 /**
604  * @brief Helper to declare LC3 Broadcast 48_4_1 codec configuration
605  *
606  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
607  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
608  */
609 #define BT_BAP_LC3_BROADCAST_PRESET_48_4_1(_loc, _stream_context)                                  \
610 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
611 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
612 						    _stream_context),                              \
613 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 4u, 20u, 40000u))
614 
615 /**
616  * @brief Helper to declare LC3 Broadcast 48_5_1 codec configuration
617  *
618  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
619  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
620  */
621 #define BT_BAP_LC3_BROADCAST_PRESET_48_5_1(_loc, _stream_context)                                  \
622 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
623 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u,   \
624 						    1, _stream_context),                           \
625 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 4u, 15u, 40000u))
626 
627 /**
628  * @brief Helper to declare LC3 Broadcast 48_6_1 codec configuration
629  *
630  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
631  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
632  */
633 #define BT_BAP_LC3_BROADCAST_PRESET_48_6_1(_loc, _stream_context)                                  \
634 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
635 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \
636 						    _stream_context),                              \
637 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 4u, 20u, 40000u))
638 
639 /**
640  * @brief Helper to declare LC3 Broadcast 8_1_2 codec configuration
641  *
642  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
643  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
644  */
645 /* Following presets are for broadcast high reliability audio data */
646 #define BT_BAP_LC3_BROADCAST_PRESET_8_1_2(_loc, _stream_context)                                   \
647 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
648 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \
649 						    _stream_context),                              \
650 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 4u, 45u, 40000u))
651 
652 /**
653  * @brief Helper to declare LC3 Broadcast 8_2_2 codec configuration
654  *
655  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
656  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
657  */
658 #define BT_BAP_LC3_BROADCAST_PRESET_8_2_2(_loc, _stream_context)                                   \
659 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ,                  \
660 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1,  \
661 						    _stream_context),                              \
662 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 4u, 60u, 40000u))
663 
664 /**
665  * @brief Helper to declare LC3 Broadcast 16_1_2 codec configuration
666  *
667  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
668  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
669  */
670 #define BT_BAP_LC3_BROADCAST_PRESET_16_1_2(_loc, _stream_context)                                  \
671 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
672 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \
673 						    _stream_context),                              \
674 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 4u, 45u, 40000u))
675 
676 /**
677  * @brief Helper to declare LC3 Broadcast 16_2_2 codec configuration
678  *
679  * Mandatory to support as both broadcast source and sink
680  *
681  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
682  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
683  */
684 #define BT_BAP_LC3_BROADCAST_PRESET_16_2_2(_loc, _stream_context)                                  \
685 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ,                 \
686 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1,  \
687 						    _stream_context),                              \
688 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 4u, 60u, 40000u))
689 
690 /**
691  * @brief Helper to declare LC3 Broadcast 24_1_2 codec configuration
692  *
693  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
694  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
695  */
696 #define BT_BAP_LC3_BROADCAST_PRESET_24_1_2(_loc, _stream_context)                                  \
697 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
698 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \
699 						    _stream_context),                              \
700 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 4u, 45u, 40000u))
701 
702 /**
703  * @brief Helper to declare LC3 Broadcast 24_2_2 codec configuration
704  *
705  * Mandatory to support as broadcast sink
706  *
707  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
708  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
709  */
710 #define BT_BAP_LC3_BROADCAST_PRESET_24_2_2(_loc, _stream_context)                                  \
711 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ,                 \
712 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1,  \
713 						    _stream_context),                              \
714 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 4u, 60u, 40000u))
715 
716 /**
717  * @brief Helper to declare LC3 Broadcast 32_1_2 codec configuration
718  *
719  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
720  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
721  */
722 #define BT_BAP_LC3_BROADCAST_PRESET_32_1_2(_loc, _stream_context)                                  \
723 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
724 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
725 						    _stream_context),                              \
726 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 4u, 45u, 40000u))
727 
728 /**
729  * @brief Helper to declare LC3 Broadcast 32_2_2 codec configuration
730  *
731  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
732  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
733  */
734 #define BT_BAP_LC3_BROADCAST_PRESET_32_2_2(_loc, _stream_context)                                  \
735 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ,                 \
736 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1,  \
737 						    _stream_context),                              \
738 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 4u, 60u, 40000u))
739 
740 /**
741  * @brief Helper to declare LC3 Broadcast 441_1_2 codec configuration
742  *
743  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
744  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
745  */
746 #define BT_BAP_LC3_BROADCAST_PRESET_441_1_2(_loc, _stream_context)                                 \
747 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
748 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \
749 						    _stream_context),                              \
750 			  BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 4u, 54u, 40000u))
751 
752 /**
753  * @brief Helper to declare LC3 Broadcast 441_2_2 codec configuration
754  *
755  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
756  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
757  */
758 #define BT_BAP_LC3_BROADCAST_PRESET_441_2_2(_loc, _stream_context)                                 \
759 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ,                 \
760 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \
761 						    _stream_context),                              \
762 			  BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 4u, 60u, 40000u))
763 
764 /**
765  * @brief Helper to declare LC3 Broadcast 48_1_2 codec configuration
766  *
767  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
768  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
769  */
770 #define BT_BAP_LC3_BROADCAST_PRESET_48_1_2(_loc, _stream_context)                                  \
771 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
772 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
773 						    _stream_context),                              \
774 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 4u, 50u, 40000u))
775 
776 /**
777  * @brief Helper to declare LC3 Broadcast 48_2_2 codec configuration
778  *
779  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
780  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
781  */
782 #define BT_BAP_LC3_BROADCAST_PRESET_48_2_2(_loc, _stream_context)                                  \
783 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
784 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
785 						    _stream_context),                              \
786 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 4u, 65u, 40000u))
787 
788 /**
789  * @brief Helper to declare LC3 Broadcast 48_3_2 codec configuration
790  *
791  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
792  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
793  */
794 #define BT_BAP_LC3_BROADCAST_PRESET_48_3_2(_loc, _stream_context)                                  \
795 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
796 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
797 						    _stream_context),                              \
798 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 4u, 50u, 40000u))
799 
800 /**
801  * @brief Helper to declare LC3 Broadcast 48_4_2 codec configuration
802  *
803  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
804  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
805  */
806 #define BT_BAP_LC3_BROADCAST_PRESET_48_4_2(_loc, _stream_context)                                  \
807 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
808 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
809 						    _stream_context),                              \
810 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 4u, 65u, 40000u))
811 
812 /**
813  * @brief Helper to declare LC3 Broadcast 48_5_2 codec configuration
814  *
815  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
816  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
817  */
818 #define BT_BAP_LC3_BROADCAST_PRESET_48_5_2(_loc, _stream_context)                                  \
819 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
820 						    BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u,   \
821 						    1, _stream_context),                           \
822 			  BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 4u, 50u, 40000u))
823 
824 /**
825  * @brief Helper to declare LC3 Broadcast 48_6_2 codec configuration
826  *
827  * @param _loc             Audio channel location bitfield (@ref bt_audio_location)
828  * @param _stream_context  Stream context (``BT_AUDIO_CONTEXT_*``)
829  */
830 #define BT_BAP_LC3_BROADCAST_PRESET_48_6_2(_loc, _stream_context)                                  \
831 	BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ,                 \
832 						    BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \
833 						    _stream_context),                              \
834 			  BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 4u, 65u, 40000u))
835 
836 #ifdef __cplusplus
837 }
838 #endif
839 /** @} */
840 
841 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_LC3_PRESET_ */
842