Zephyr API Documentation  3.0.0
A Scalable Open Source RTOS
3.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
audio.h
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2020 Intel Corporation
7 * Copyright (c) 2020-2022 Nordic Semiconductor ASA
8 *
9 * SPDX-License-Identifier: Apache-2.0
10 */
11#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_AUDIO_H_
12#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_AUDIO_H_
13
14#include <sys/atomic.h>
15#include <bluetooth/buf.h>
16#include <bluetooth/conn.h>
17#include <bluetooth/hci.h>
18#include <bluetooth/iso.h>
19#include <bluetooth/gatt.h>
20#include <bluetooth/audio/lc3.h>
21
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#define BT_AUDIO_BROADCAST_ID_SIZE 3 /* octets */
34
35/* Audio Context Type, Generic Audio */
36#define BT_AUDIO_CONTEXT_TYPE_PROHIBITED BIT(0)
37#define BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED BIT(1)
38#define BT_AUDIO_CONTEXT_TYPE_CONVERSATIONAL BIT(2)
39#define BT_AUDIO_CONTEXT_TYPE_MEDIA BIT(3)
40#define BT_AUDIO_CONTEXT_TYPE_GAME BIT(4)
41#define BT_AUDIO_CONTEXT_TYPE_INSTRUCTIONAL BIT(5)
42#define BT_AUDIO_CONTEXT_TYPE_VOICE_ASSISTANTS BIT(6)
43#define BT_AUDIO_CONTEXT_TYPE_LIVE BIT(7)
44#define BT_AUDIO_CONTEXT_TYPE_SOUND_EFFECTS BIT(8)
45#define BT_AUDIO_CONTEXT_TYPE_NOTIFICATIONS BIT(9)
46#define BT_AUDIO_CONTEXT_TYPE_RINGTONE BIT(10)
47#define BT_AUDIO_CONTEXT_TYPE_ALERTS BIT(11)
48#define BT_AUDIO_CONTEXT_TYPE_EMERGENCY_ALARM BIT(12)
49
50/* Unicast Announcement Type, Generic Audio */
51#define BT_AUDIO_UNICAST_ANNOUNCEMENT_GENERAL 0x00
52#define BT_AUDIO_UNICAST_ANNOUNCEMENT_TARGETED 0x01
53
54#if defined(CONFIG_BT_AUDIO_BROADCAST_SINK)
55#define BROADCAST_SNK_STREAM_CNT CONFIG_BT_AUDIO_BROADCAST_SNK_STREAM_COUNT
56#define BROADCAST_SUBGROUP_CNT CONFIG_BT_AUDIO_BROADCAST_SUBGROUP_COUNT
57#else /* !CONFIG_BT_AUDIO_BROADCAST_SINK */
58#define BROADCAST_SNK_STREAM_CNT 0
59#define BROADCAST_SUBGROUP_CNT 0
60#endif /* CONFIG_BT_AUDIO_BROADCAST_SINK*/
61
63struct bt_audio_unicast_group;
64
66struct bt_audio_broadcast_sink;
67
69struct bt_audio_broadcast_source;
70
73 struct bt_data data;
74 uint8_t value[CONFIG_BT_CODEC_MAX_DATA_LEN];
75};
76
87#define BT_CODEC_DATA(_type, _bytes...) \
88 { \
89 .data = BT_DATA(_type, ((uint8_t []) { _bytes }), \
90 sizeof((uint8_t []) { _bytes })) \
91 }
92
102#define BT_CODEC(_id, _cid, _vid, _data, _meta) \
103 { \
104 .id = _id, \
105 .cid = _cid, \
106 .vid = _vid, \
107 .data_count = ARRAY_SIZE(((struct bt_codec_data[]) _data)), \
108 .data = _data, \
109 .meta_count = ARRAY_SIZE(((struct bt_codec_data[]) _meta)), \
110 .meta = _meta, \
111 }
112
113/* TODO: Remove base once LTV types are defined, are these specific to LC3? */
114#define BT_CODEC_META_BASE 0x01
115
116#define BT_CODEC_META_PREFER_CONTEXT (BT_CODEC_META_BASE)
117#define BT_CODEC_META_CONTEXT (BT_CODEC_META_BASE + 1)
118
119/* @def BT_CODEC_META_CONTEXT_NONE
120 *
121 * Unspecified. Matches any audio content.
122 */
123#define BT_CODEC_META_CONTEXT_NONE BIT(0)
124
125/* @def BT_CODEC_META_CONTEXT_VOICE
126 *
127 * Conversation between humans as, for example, in telephony or video calls.
128 */
129#define BT_CODEC_META_CONTEXT_VOICE BIT(1)
130
131/* @def BT_CODEC_META_CONTEXT_MEDIA
132 *
133 * Media as, for example, in music, public radio, podcast or video soundtrack.
134 * Conversation between humans as, for example, in telephony or video calls.
135 */
136#define BT_CODEC_META_CONTEXT_MEDIA BIT(2)
137
138/* @def BT_CODEC_META_CONTEXT_INSTRUCTION
139 *
140 * Instructional audio as, for example, in navigation, traffic announcements or
141 * user guidance.
142 */
143#define BT_CODEC_META_CONTEXT_INSTRUCTION BIT(3)
144
145/* @def BT_CODEC_META_CONTEXT_ATTENTION
146 *
147 * Attention seeking audio as, for example, in beeps signalling arrival of a
148 * message or keyboard clicks.
149 */
150#define BT_CODEC_META_CONTEXT_ATTENTION BIT(4)
151
152/* @def BT_CODEC_META_CONTEXT_ALERT
153 *
154 * Immediate alerts as, for example, in a low battery alarm, timer expiry or
155 * alarm clock.
156 */
157#define BT_CODEC_META_CONTEXT_ALERT BIT(5)
158
159/* @def BT_CODEC_META_CONTEXT_MAN_MACHINE
160 *
161 * Man machine communication as, for example, with voice recognition or
162 * virtual assistant.
163 */
164#define BT_CODEC_META_CONTEXT_MAN_MACHINE BIT(6)
165
166/* @def BT_CODEC_META_CONTEXT_EMERGENCY
167 *
168 * Emergency alerts as, for example, with fire alarms or other urgent alerts.
169 */
170#define BT_CODEC_META_CONTEXT_EMERGENCY BIT(7)
171
172/* @def BT_CODEC_META_CONTEXT_RINGTONE
173 *
174 * Ringtone as in a call alert.
175 */
176#define BT_CODEC_META_CONTEXT_RINGTONE BIT(8)
177
178/* @def BT_CODEC_META_CONTEXT_TV
179 *
180 * Audio associated with a television program and/or with metadata conforming
181 * to the Bluetooth Broadcast TV profile.
182 */
183#define BT_CODEC_META_CONTEXT_TV BIT(9)
184
185/* @def BT_CODEC_META_CONTEXT_ANY
186 *
187 * Any known context.
188 */
189#define BT_CODEC_META_CONTEXT_ANY (BT_CODEC_META_CONTEXT_NONE | \
190 BT_CODEC_META_CONTEXT_VOICE | \
191 BT_CODEC_META_CONTEXT_MEDIA | \
192 BT_CODEC_META_CONTEXT_INSTRUCTION | \
193 BT_CODEC_META_CONTEXT_ATTENTION | \
194 BT_CODEC_META_CONTEXT_ALERT | \
195 BT_CODEC_META_CONTEXT_MAN_MACHINE | \
196 BT_CODEC_META_CONTEXT_EMERGENCY | \
197 BT_CODEC_META_CONTEXT_RINGTONE | \
198 BT_CODEC_META_CONTEXT_TV)
199
201struct bt_codec {
211 struct bt_codec_data data[CONFIG_BT_CODEC_MAX_DATA_COUNT];
215 struct bt_codec_data meta[CONFIG_BT_CODEC_MAX_METADATA_COUNT];
216};
217
219 /* Unique index of the BIS */
230 struct bt_codec_data data[CONFIG_BT_CODEC_MAX_DATA_COUNT];
231};
232
234 /* Number of BIS in the subgroup */
242 /* Array of BIS specific data for each BIS in the subgroup */
244};
245
247 /* Number of subgroups in the BASE */
249 /* Array of subgroups in the BASE */
251};
252
265#define BT_CODEC_QOS(_dir, _interval, _framing, _phy, _sdu, _rtn, _latency, \
266 _pd) \
267 { \
268 .dir = _dir, \
269 .interval = _interval, \
270 .framing = _framing, \
271 .phy = _phy, \
272 .sdu = _sdu, \
273 .rtn = _rtn, \
274 .latency = _latency, \
275 .pd = _pd, \
276 }
277
279enum {
284
286enum {
289};
290
292enum {
296};
297
307#define BT_CODEC_QOS_IN_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
308 BT_CODEC_QOS(BT_CODEC_QOS_IN, _interval, BT_CODEC_QOS_UNFRAMED, \
309 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
310
319#define BT_CODEC_QOS_OUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
320 BT_CODEC_QOS(BT_CODEC_QOS_OUT, _interval, BT_CODEC_QOS_UNFRAMED, \
321 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
322
332#define BT_CODEC_QOS_INOUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
333 BT_CODEC_QOS(BT_CODEC_QOS_INOUT, _interval, BT_CODEC_QOS_UNFRAMED, \
334 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
335
345#define BT_CODEC_QOS_IN_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
346 BT_CODEC_QOS(BT_CODEC_QOS_IN, _interval, BT_CODEC_QOS_FRAMED, \
347 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
348
358#define BT_CODEC_QOS_OUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
359 BT_CODEC_QOS(BT_CODEC_QOS_OUT, _interval, BT_CODEC_QOS_FRAMED, \
360 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
361
371#define BT_CODEC_QOS_INOUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
372 BT_CODEC_QOS(BT_CODEC_QOS_INOUT, _interval, BT_CODEC_QOS_FRAMED, \
373 BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
374
383
386
389
392
395
398
403};
404
417#define BT_CODEC_QOS_PREF(_unframed_supported, _phy, _rtn, _latency, _pd_min, \
418 _pd_max, _pref_pd_min, _pref_pd_max) \
419 { \
420 .unframed_supported = _unframed_supported, \
421 .phy = _phy, \
422 .rtn = _rtn, \
423 .latency = _latency, \
424 .pd_min = _pd_min, \
425 .pd_max = _pd_max, \
426 .pref_pd_min = _pref_pd_min, \
427 .pref_pd_max = _pref_pd_max, \
428 }
429
438
441
444
447
454
461
464
467};
468
475};
476
478#define BT_AUDIO_LC3_PRESET(_codec, _qos) \
479 { \
480 .codec = _codec, \
481 .qos = _qos, \
482 }
483
484/* LC3 Unicast presets defined by table 5.2 in the BAP v1.0 specification */
485#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_1 \
486 BT_AUDIO_LC3_PRESET( \
487 BT_CODEC_LC3_CONFIG_8_1, \
488 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 2u, 8u, 40000u) \
489 )
490
491#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_1 \
492 BT_AUDIO_LC3_PRESET( \
493 BT_CODEC_LC3_CONFIG_8_2, \
494 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 2u, 10u, 40000u) \
495 )
496
497#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_1 \
498 BT_AUDIO_LC3_PRESET( \
499 BT_CODEC_LC3_CONFIG_16_1, \
500 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 2u, 8u, 40000u) \
501 )
502
504#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_1 \
505 BT_AUDIO_LC3_PRESET( \
506 BT_CODEC_LC3_CONFIG_16_2, \
507 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 2u, 10u, 40000u) \
508 )
509
510#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_1 \
511 BT_AUDIO_LC3_PRESET( \
512 BT_CODEC_LC3_CONFIG_24_1, \
513 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 2u, 8u, 40000u) \
514 )
515
517#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_1 \
518 BT_AUDIO_LC3_PRESET( \
519 BT_CODEC_LC3_CONFIG_24_2, \
520 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 2u, 10u, 40000u) \
521 )
522
523#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_1 \
524 BT_AUDIO_LC3_PRESET( \
525 BT_CODEC_LC3_CONFIG_32_1, \
526 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 2u, 8u, 40000u) \
527 )
528
529#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_1 \
530 BT_AUDIO_LC3_PRESET( \
531 BT_CODEC_LC3_CONFIG_32_2, \
532 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 2u, 10u, 40000u) \
533 )
534
535#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_1 \
536 BT_AUDIO_LC3_PRESET( \
537 BT_CODEC_LC3_CONFIG_441_1, \
538 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \
539 BT_CODEC_QOS_2M, 97u, 5u, 24u, 40000u) \
540 )
541
542#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_1 \
543 BT_AUDIO_LC3_PRESET( \
544 BT_CODEC_LC3_CONFIG_441_2, \
545 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \
546 BT_CODEC_QOS_2M, 130u, 5u, 31u, 40000u) \
547 )
548
549#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_1 \
550 BT_AUDIO_LC3_PRESET( \
551 BT_CODEC_LC3_CONFIG_48_1, \
552 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 5u, 15u, 40000u) \
553 )
554
555#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_1 \
556 BT_AUDIO_LC3_PRESET( \
557 BT_CODEC_LC3_CONFIG_48_2, \
558 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 5u, 20u, 40000u) \
559 )
560
561#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_1 \
562 BT_AUDIO_LC3_PRESET( \
563 BT_CODEC_LC3_CONFIG_48_3, \
564 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 5u, 15u, 40000u) \
565 )
566
567#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_1 \
568 BT_AUDIO_LC3_PRESET( \
569 BT_CODEC_LC3_CONFIG_48_4, \
570 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 5u, 20u, 40000u) \
571 )
572
573#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_1 \
574 BT_AUDIO_LC3_PRESET( \
575 BT_CODEC_LC3_CONFIG_48_5, \
576 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 5u, 15u, 40000u) \
577 )
578
579#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_1 \
580 BT_AUDIO_LC3_PRESET( \
581 BT_CODEC_LC3_CONFIG_48_6, \
582 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 5u, 20u, 40000u) \
583 )
584
585/* Following presets are for unicast high reliability audio data */
586#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_2 \
587 BT_AUDIO_LC3_PRESET( \
588 BT_CODEC_LC3_CONFIG_8_1, \
589 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 13u, 75u, 40000u) \
590 )
591
592#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_2 \
593 BT_AUDIO_LC3_PRESET( \
594 BT_CODEC_LC3_CONFIG_8_2, \
595 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 13u, 95u, 40000u) \
596 )
597
598#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_2 \
599 BT_AUDIO_LC3_PRESET( \
600 BT_CODEC_LC3_CONFIG_16_1, \
601 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 13u, 75u, 40000u) \
602 )
603
604#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_2 \
605 BT_AUDIO_LC3_PRESET( \
606 BT_CODEC_LC3_CONFIG_16_2, \
607 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 13u, 95u, 40000u) \
608 )
609
610#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_2 \
611 BT_AUDIO_LC3_PRESET( \
612 BT_CODEC_LC3_CONFIG_24_1, \
613 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 13u, 75u, 40000u) \
614 )
615
616#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_2 \
617 BT_AUDIO_LC3_PRESET( \
618 BT_CODEC_LC3_CONFIG_24_2, \
619 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 13u, 95u, 40000u) \
620 )
621
622#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_2 \
623 BT_AUDIO_LC3_PRESET( \
624 BT_CODEC_LC3_CONFIG_32_1, \
625 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 13u, 75u, 40000u) \
626 )
627
628#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_2 \
629 BT_AUDIO_LC3_PRESET( \
630 BT_CODEC_LC3_CONFIG_32_2, \
631 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 13u, 95u, 40000u) \
632 )
633
634#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_2 \
635 BT_AUDIO_LC3_PRESET( \
636 BT_CODEC_LC3_CONFIG_441_1, \
637 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \
638 BT_CODEC_QOS_2M, 97u, 13u, 80u, 40000u) \
639 )
640
641#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_2 \
642 BT_AUDIO_LC3_PRESET( \
643 BT_CODEC_LC3_CONFIG_441_2, \
644 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \
645 BT_CODEC_QOS_2M, 130u, 13u, 85u, 40000u) \
646 )
647
648#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_2 \
649 BT_AUDIO_LC3_PRESET( \
650 BT_CODEC_LC3_CONFIG_48_1, \
651 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 13u, 75u, 40000u) \
652 )
653
654#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_2 \
655 BT_AUDIO_LC3_PRESET( \
656 BT_CODEC_LC3_CONFIG_48_2, \
657 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 13u, 95u, 40000u) \
658 )
659
660#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_2 \
661 BT_AUDIO_LC3_PRESET( \
662 BT_CODEC_LC3_CONFIG_48_3, \
663 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 13u, 75u, 40000u) \
664 )
665
666#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_2 \
667 BT_AUDIO_LC3_PRESET( \
668 BT_CODEC_LC3_CONFIG_48_4, \
669 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 13u, 100u, 40000u) \
670 )
671
672#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_2 \
673 BT_AUDIO_LC3_PRESET( \
674 BT_CODEC_LC3_CONFIG_48_5, \
675 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 13u, 75u, 40000u) \
676 )
677
678#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_2 \
679 BT_AUDIO_LC3_PRESET( \
680 BT_CODEC_LC3_CONFIG_48_6, \
681 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 13u, 100u, 40000u) \
682 )
683
684/* LC3 Broadcast presets defined by table 6.4 in the BAP v1.0 specification */
685#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_1 \
686 BT_AUDIO_LC3_PRESET( \
687 BT_CODEC_LC3_CONFIG_8_1, \
688 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 2u, 8u, 40000u) \
689 )
690
691#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_1 \
692 BT_AUDIO_LC3_PRESET( \
693 BT_CODEC_LC3_CONFIG_8_2, \
694 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 2u, 10u, 40000u) \
695 )
696
697#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_1 \
698 BT_AUDIO_LC3_PRESET( \
699 BT_CODEC_LC3_CONFIG_16_1, \
700 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 2u, 8u, 40000u) \
701 )
702
704#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_1 \
705 BT_AUDIO_LC3_PRESET( \
706 BT_CODEC_LC3_CONFIG_16_2, \
707 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 2u, 10u, 40000u) \
708 )
709
710#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_1 \
711 BT_AUDIO_LC3_PRESET( \
712 BT_CODEC_LC3_CONFIG_24_1, \
713 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 2u, 8u, 40000u) \
714 )
715
717#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_1 \
718 BT_AUDIO_LC3_PRESET( \
719 BT_CODEC_LC3_CONFIG_24_2, \
720 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 2u, 10u, 40000u) \
721 )
722
723#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_1 \
724 BT_AUDIO_LC3_PRESET( \
725 BT_CODEC_LC3_CONFIG_32_1, \
726 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 2u, 8u, 40000u) \
727 )
728
729#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_1 \
730 BT_AUDIO_LC3_PRESET( \
731 BT_CODEC_LC3_CONFIG_32_2, \
732 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 2u, 10u, 40000u) \
733 )
734
735#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_1 \
736 BT_AUDIO_LC3_PRESET( \
737 BT_CODEC_LC3_CONFIG_441_1, \
738 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \
739 BT_CODEC_QOS_2M, 97u, 4u, 24u, 40000u) \
740 )
741
742#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_1 \
743 BT_AUDIO_LC3_PRESET( \
744 BT_CODEC_LC3_CONFIG_441_2, \
745 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \
746 BT_CODEC_QOS_2M, 130u, 4u, 31u, 40000u) \
747 )
748
749#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_1 \
750 BT_AUDIO_LC3_PRESET( \
751 BT_CODEC_LC3_CONFIG_48_1, \
752 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 4u, 15u, 40000u) \
753 )
754
755#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_1 \
756 BT_AUDIO_LC3_PRESET( \
757 BT_CODEC_LC3_CONFIG_48_2, \
758 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 4u, 20u, 40000u) \
759 )
760
761#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_1 \
762 BT_AUDIO_LC3_PRESET( \
763 BT_CODEC_LC3_CONFIG_48_3, \
764 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 4u, 15u, 40000u) \
765 )
766
767#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_1 \
768 BT_AUDIO_LC3_PRESET( \
769 BT_CODEC_LC3_CONFIG_48_4, \
770 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 4u, 20u, 40000u) \
771 )
772
773#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_1 \
774 BT_AUDIO_LC3_PRESET( \
775 BT_CODEC_LC3_CONFIG_48_5, \
776 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 4u, 15u, 40000u) \
777 )
778
779#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_1 \
780 BT_AUDIO_LC3_PRESET( \
781 BT_CODEC_LC3_CONFIG_48_6, \
782 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 4u, 20u, 40000u) \
783 )
784
785/* Following presets are for broadcast high reliability audio data */
786#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_2 \
787 BT_AUDIO_LC3_PRESET( \
788 BT_CODEC_LC3_CONFIG_8_1, \
789 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 4u, 45u, 40000u) \
790 )
791
792#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_2 \
793 BT_AUDIO_LC3_PRESET( \
794 BT_CODEC_LC3_CONFIG_8_2, \
795 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 4u, 60u, 40000u) \
796 )
797
798#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_2 \
799 BT_AUDIO_LC3_PRESET( \
800 BT_CODEC_LC3_CONFIG_16_1, \
801 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 4u, 45u, 40000u) \
802 )
803
805#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_2 \
806 BT_AUDIO_LC3_PRESET( \
807 BT_CODEC_LC3_CONFIG_16_2, \
808 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 4u, 60u, 40000u) \
809 )
810
811#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_2 \
812 BT_AUDIO_LC3_PRESET( \
813 BT_CODEC_LC3_CONFIG_24_1, \
814 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 4u, 45u, 40000u) \
815 )
816
818#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_2 \
819 BT_AUDIO_LC3_PRESET( \
820 BT_CODEC_LC3_CONFIG_24_2, \
821 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 4u, 60u, 40000u) \
822 )
823
824#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_2 \
825 BT_AUDIO_LC3_PRESET( \
826 BT_CODEC_LC3_CONFIG_32_1, \
827 BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 4u, 45u, 40000u) \
828 )
829
830#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_2 \
831 BT_AUDIO_LC3_PRESET( \
832 BT_CODEC_LC3_CONFIG_32_2, \
833 BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 4u, 60u, 40000u) \
834 )
835
836#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_2 \
837 BT_AUDIO_LC3_PRESET( \
838 BT_CODEC_LC3_CONFIG_441_1, \
839 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \
840 BT_CODEC_QOS_2M, 97u, 4u, 54u, 40000u) \
841 )
842
843#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_2 \
844 BT_AUDIO_LC3_PRESET( \
845 BT_CODEC_LC3_CONFIG_441_2, \
846 BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \
847 BT_CODEC_QOS_2M, 130u, 4u, 60u, 40000u) \
848 )
849
850#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_2 \
851 BT_AUDIO_LC3_PRESET( \
852 BT_CODEC_LC3_CONFIG_48_1, \
853 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 4u, 50u, 40000u) \
854 )
855
856#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_2 \
857 BT_AUDIO_LC3_PRESET( \
858 BT_CODEC_LC3_CONFIG_48_2, \
859 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 4u, 65u, 40000u) \
860 )
861
862#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_2 \
863 BT_AUDIO_LC3_PRESET( \
864 BT_CODEC_LC3_CONFIG_48_3, \
865 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 4u, 50u, 40000u) \
866 )
867
868#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_2 \
869 BT_AUDIO_LC3_PRESET( \
870 BT_CODEC_LC3_CONFIG_48_4, \
871 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 4u, 65u, 40000u) \
872 )
873
874#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_2 \
875 BT_AUDIO_LC3_PRESET( \
876 BT_CODEC_LC3_CONFIG_48_5, \
877 BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 4u, 50u, 40000u) \
878 )
879
880#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_2 \
881 BT_AUDIO_LC3_PRESET( \
882 BT_CODEC_LC3_CONFIG_48_6, \
883 BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 4u, 65u, 40000u) \
884 )
885
897 struct bt_conn *conn;
899 struct bt_audio_ep *ep;
909
910 union {
911 void *group;
912 struct bt_audio_unicast_group *unicast_group;
913 struct bt_audio_broadcast_source *broadcast_source;
914 struct bt_audio_broadcast_sink *broadcast_sink;
915 };
916
919};
920
940 int (*config)(struct bt_conn *conn,
941 const struct bt_audio_ep *ep,
942 uint8_t type,
943 const struct bt_codec *codec,
944 struct bt_audio_stream **stream,
945 struct bt_codec_qos_pref *const pref);
946
961 int (*reconfig)(struct bt_audio_stream *stream,
962 uint8_t type,
963 const struct bt_codec *codec,
964 struct bt_codec_qos_pref *const pref);
965
976 int (*qos)(struct bt_audio_stream *stream,
977 const struct bt_codec_qos *qos);
978
990 int (*enable)(struct bt_audio_stream *stream, uint8_t meta_count,
991 const struct bt_codec_data *meta);
992
1002 int (*start)(struct bt_audio_stream *stream);
1003
1015 int (*metadata)(struct bt_audio_stream *stream, uint8_t meta_count,
1016 const struct bt_codec_data *meta);
1017
1027 int (*disable)(struct bt_audio_stream *stream);
1028
1038 int (*stop)(struct bt_audio_stream *stream);
1039
1049 int (*release)(struct bt_audio_stream *stream);
1050
1069 int (*publish_capability)(struct bt_conn *conn, uint8_t type,
1070 uint8_t index, struct bt_codec *const codec);
1071};
1072
1086 bool (*scan_recv)(const struct bt_le_scan_recv_info *info,
1087 uint32_t broadcast_id);
1088
1100 void (*pa_synced)(struct bt_audio_broadcast_sink *sink,
1101 struct bt_le_per_adv_sync *sync,
1102 uint32_t broadcast_id);
1103
1112 void (*base_recv)(struct bt_audio_broadcast_sink *sink,
1113 const struct bt_audio_base *base);
1114
1127 void (*syncable)(struct bt_audio_broadcast_sink *sink, bool encrypted);
1128
1142 void (*scan_term)(int err);
1143
1153 void (*pa_sync_lost)(struct bt_audio_broadcast_sink *sink);
1154
1155 /* Internally used list node */
1157};
1158
1169 void (*configured)(struct bt_audio_stream *stream,
1170 const struct bt_codec_qos_pref *pref);
1171
1179 void (*qos_set)(struct bt_audio_stream *stream);
1180
1188 void (*enabled)(struct bt_audio_stream *stream);
1189
1197 void (*started)(struct bt_audio_stream *stream);
1198
1206 void (*metadata_updated)(struct bt_audio_stream *stream);
1207
1215 void (*disabled)(struct bt_audio_stream *stream);
1216
1224 void (*stopped)(struct bt_audio_stream *stream);
1225
1233 void (*released)(struct bt_audio_stream *stream);
1234
1242 void (*connected)(struct bt_audio_stream *stream);
1243
1253 void (*disconnected)(struct bt_audio_stream *stream, uint8_t reason);
1254
1262 void (*recv)(struct bt_audio_stream *stream, struct net_buf *buf);
1263};
1264
1269};
1270
1281 struct bt_audio_stream_ops *ops);
1282
1293
1304
1312
1318typedef void (*bt_audio_discover_func_t)(struct bt_conn *conn,
1319 struct bt_codec *codec,
1320 struct bt_audio_ep *ep,
1321 struct bt_audio_discover_params *params);
1322
1336};
1337
1349int bt_audio_discover(struct bt_conn *conn,
1350 struct bt_audio_discover_params *params);
1351
1364int bt_audio_stream_config(struct bt_conn *conn,
1365 struct bt_audio_stream *stream,
1366 struct bt_audio_ep *ep,
1367 struct bt_codec *codec);
1368
1382 struct bt_codec *codec);
1383
1397int bt_audio_stream_qos(struct bt_conn *conn,
1398 struct bt_audio_unicast_group *group,
1399 struct bt_codec_qos *qos);
1400
1415 uint8_t meta_count, struct bt_codec_data *meta);
1416
1428 uint8_t meta_count, struct bt_codec_data *meta);
1429
1442
1456
1470
1486int bt_audio_stream_release(struct bt_audio_stream *stream, bool cache);
1487
1500int bt_audio_stream_send(struct bt_audio_stream *stream, struct net_buf *buf);
1501
1516 uint8_t num_stream,
1517 struct bt_audio_unicast_group **unicast_group);
1518
1528int bt_audio_unicast_group_delete(struct bt_audio_unicast_group *unicast_group);
1529
1552 uint8_t num_stream,
1553 struct bt_codec *codec,
1554 struct bt_codec_qos *qos,
1555 struct bt_audio_broadcast_source **source);
1556
1568int bt_audio_broadcast_source_reconfig(struct bt_audio_broadcast_source *source,
1569 struct bt_codec *codec,
1570 struct bt_codec_qos *qos);
1571
1582int bt_audio_broadcast_source_start(struct bt_audio_broadcast_source *source);
1583
1594int bt_audio_broadcast_source_stop(struct bt_audio_broadcast_source *source);
1595
1606int bt_audio_broadcast_source_delete(struct bt_audio_broadcast_source *source);
1607
1613
1627
1636
1654int bt_audio_broadcast_sink_sync(struct bt_audio_broadcast_sink *sink,
1655 uint32_t indexes_bitfield,
1656 struct bt_audio_stream *streams,
1657 struct bt_codec *codec,
1658 const uint8_t broadcast_code[16]);
1659
1670int bt_audio_broadcast_sink_stop(struct bt_audio_broadcast_sink *sink);
1671
1683int bt_audio_broadcast_sink_delete(struct bt_audio_broadcast_sink *sink);
1684
1687#ifdef __cplusplus
1688}
1689#endif
1690
1695#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_H_ */
Bluetooth data buffer API.
ZTEST_BMEM int index[(3)]
Definition: main.c:32
Bluetooth connection handling.
Generic Attribute Profile handling.
int bt_audio_broadcast_source_create(struct bt_audio_stream *streams, uint8_t num_stream, struct bt_codec *codec, struct bt_codec_qos *qos, struct bt_audio_broadcast_source **source)
Create audio broadcast source.
int bt_audio_broadcast_sink_sync(struct bt_audio_broadcast_sink *sink, uint32_t indexes_bitfield, struct bt_audio_stream *streams, struct bt_codec *codec, const uint8_t broadcast_code[16])
Sync to a broadcaster's audio.
int bt_audio_stream_reconfig(struct bt_audio_stream *stream, struct bt_codec *codec)
Reconfigure Audio Stream.
int bt_audio_broadcast_sink_delete(struct bt_audio_broadcast_sink *sink)
Release a broadcast sink.
int bt_audio_stream_qos(struct bt_conn *conn, struct bt_audio_unicast_group *group, struct bt_codec_qos *qos)
Configure Audio Stream QoS.
int bt_audio_stream_start(struct bt_audio_stream *stream)
Start Audio Stream.
int bt_audio_broadcast_source_delete(struct bt_audio_broadcast_source *source)
Delete audio broadcast source.
int bt_audio_unicast_group_delete(struct bt_audio_unicast_group *unicast_group)
Delete audio unicast group.
void bt_audio_broadcast_sink_register_cb(struct bt_audio_broadcast_sink_cb *cb)
Register Broadcast sink callbacks *.
int bt_audio_discover(struct bt_conn *conn, struct bt_audio_discover_params *params)
Discover remote capabilities and endpoints.
void(* bt_audio_discover_func_t)(struct bt_conn *conn, struct bt_codec *codec, struct bt_audio_ep *ep, struct bt_audio_discover_params *params)
Discover Audio capabilities and endpoints callback function.
Definition: audio.h:1318
int bt_audio_stream_release(struct bt_audio_stream *stream, bool cache)
Release Audio Stream.
int bt_audio_broadcast_sink_scan_start(const struct bt_le_scan_param *param)
Start scan for broadcast sources.
int bt_audio_stream_send(struct bt_audio_stream *stream, struct net_buf *buf)
Send data to Audio stream.
int bt_audio_stream_stop(struct bt_audio_stream *stream)
Stop Audio Stream.
int bt_audio_stream_config(struct bt_conn *conn, struct bt_audio_stream *stream, struct bt_audio_ep *ep, struct bt_codec *codec)
Configure Audio Stream.
int bt_audio_broadcast_sink_stop(struct bt_audio_broadcast_sink *sink)
Stop audio broadcast sink.
int bt_audio_unicast_group_create(struct bt_audio_stream *streams, uint8_t num_stream, struct bt_audio_unicast_group **unicast_group)
Create audio unicast group.
int bt_audio_stream_metadata(struct bt_audio_stream *stream, uint8_t meta_count, struct bt_codec_data *meta)
Change Audio Stream Metadata.
int bt_audio_stream_disable(struct bt_audio_stream *stream)
Disable Audio Stream.
int bt_audio_broadcast_sink_scan_stop(void)
Stop scan for broadcast sources.
int bt_audio_broadcast_source_reconfig(struct bt_audio_broadcast_source *source, struct bt_codec *codec, struct bt_codec_qos *qos)
Reconfigure audio broadcast source.
int bt_audio_broadcast_source_stop(struct bt_audio_broadcast_source *source)
Stop audio broadcast source.
int bt_audio_stream_enable(struct bt_audio_stream *stream, uint8_t meta_count, struct bt_codec_data *meta)
Enable Audio Stream.
int bt_audio_broadcast_source_start(struct bt_audio_broadcast_source *source)
Start audio broadcast source.
#define BROADCAST_SNK_STREAM_CNT
Definition: audio.h:58
bt_audio_pac_type
Audio Capability type.
Definition: audio.h:1266
int bt_audio_unicast_server_register_cb(const struct bt_audio_unicast_server_cb *cb)
Register unicast server callbacks.
void bt_audio_stream_cb_register(struct bt_audio_stream *stream, struct bt_audio_stream_ops *ops)
Register Audio callbacks for a stream.
int bt_audio_unicast_server_unregister_cb(const struct bt_audio_unicast_server_cb *cb)
Unregister unicast server callbacks.
#define BROADCAST_SUBGROUP_CNT
Definition: audio.h:59
@ BT_CODEC_QOS_2M
Definition: audio.h:294
@ BT_CODEC_QOS_CODED
Definition: audio.h:295
@ BT_CODEC_QOS_1M
Definition: audio.h:293
@ BT_CODEC_QOS_UNFRAMED
Definition: audio.h:287
@ BT_CODEC_QOS_FRAMED
Definition: audio.h:288
@ BT_AUDIO_SOURCE
Definition: audio.h:1268
@ BT_AUDIO_SINK
Definition: audio.h:1267
@ BT_CODEC_QOS_INOUT
Definition: audio.h:282
@ BT_CODEC_QOS_IN
Definition: audio.h:280
@ BT_CODEC_QOS_OUT
Definition: audio.h:281
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
Bluetooth ISO handling.
Bluetooth LC3 codec handling.
struct _snode sys_snode_t
Definition: slist.h:33
#define bool
Definition: stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
Definition: audio.h:218
uint8_t index
Definition: audio.h:220
struct bt_codec_data data[CONFIG_BT_CODEC_MAX_DATA_COUNT]
Definition: audio.h:230
uint8_t data_count
Definition: audio.h:225
Definition: audio.h:233
struct bt_audio_base_bis_data bis_data[0]
Definition: audio.h:243
struct bt_codec codec
Definition: audio.h:241
uint8_t bis_count
Definition: audio.h:235
Definition: audio.h:246
uint8_t subgroup_count
Definition: audio.h:248
struct bt_audio_base_subgroup subgroups[0]
Definition: audio.h:250
Definition: audio.h:1074
void(* scan_term)(int err)
Scan terminated callback.
Definition: audio.h:1142
bool(* scan_recv)(const struct bt_le_scan_recv_info *info, uint32_t broadcast_id)
Scan receive callback.
Definition: audio.h:1086
void(* syncable)(struct bt_audio_broadcast_sink *sink, bool encrypted)
Broadcast sink is syncable.
Definition: audio.h:1127
void(* pa_synced)(struct bt_audio_broadcast_sink *sink, struct bt_le_per_adv_sync *sync, uint32_t broadcast_id)
Periodic advertising sync callback.
Definition: audio.h:1100
void(* base_recv)(struct bt_audio_broadcast_sink *sink, const struct bt_audio_base *base)
Broadcast Audio Source Endpoint (BASE) received.
Definition: audio.h:1112
sys_snode_t node
Definition: audio.h:1156
void(* pa_sync_lost)(struct bt_audio_broadcast_sink *sink)
Periodic advertising synchronization lost callback.
Definition: audio.h:1153
Definition: audio.h:1323
uint8_t num_caps
Definition: audio.h:1329
uint8_t err
Definition: audio.h:1333
uint8_t type
Definition: audio.h:1325
uint8_t num_eps
Definition: audio.h:1331
struct bt_gatt_read_params read
Definition: audio.h:1334
struct bt_gatt_discover_params discover
Definition: audio.h:1335
bt_audio_discover_func_t func
Definition: audio.h:1327
Definition: audio.h:470
struct bt_codec codec
Definition: audio.h:472
struct bt_codec_qos qos
Definition: audio.h:474
Stream operation.
Definition: audio.h:1160
void(* disabled)(struct bt_audio_stream *stream)
Stream disabled callback.
Definition: audio.h:1215
void(* configured)(struct bt_audio_stream *stream, const struct bt_codec_qos_pref *pref)
Stream configured callback.
Definition: audio.h:1169
void(* metadata_updated)(struct bt_audio_stream *stream)
Stream metadata updated callback.
Definition: audio.h:1206
void(* stopped)(struct bt_audio_stream *stream)
Stream stopped callback.
Definition: audio.h:1224
void(* recv)(struct bt_audio_stream *stream, struct net_buf *buf)
Stream audio HCI receive callback.
Definition: audio.h:1262
void(* released)(struct bt_audio_stream *stream)
Stream released callback.
Definition: audio.h:1233
void(* enabled)(struct bt_audio_stream *stream)
Stream enabled callback.
Definition: audio.h:1188
void(* started)(struct bt_audio_stream *stream)
Stream started callback.
Definition: audio.h:1197
void(* connected)(struct bt_audio_stream *stream)
Stream connected callback.
Definition: audio.h:1242
void(* disconnected)(struct bt_audio_stream *stream, uint8_t reason)
Stream disconnected callback.
Definition: audio.h:1253
void(* qos_set)(struct bt_audio_stream *stream)
Stream QoS set callback.
Definition: audio.h:1179
Audio stream structure.
Definition: audio.h:895
struct bt_audio_stream_ops * ops
Definition: audio.h:907
sys_snode_t node
Definition: audio.h:908
struct bt_audio_unicast_group * unicast_group
Definition: audio.h:912
struct bt_audio_broadcast_sink * broadcast_sink
Definition: audio.h:914
struct bt_codec * codec
Definition: audio.h:901
void * group
Definition: audio.h:911
struct bt_conn * conn
Definition: audio.h:897
struct bt_audio_ep * ep
Definition: audio.h:899
struct bt_audio_broadcast_source * broadcast_source
Definition: audio.h:913
struct bt_iso_chan * iso
Definition: audio.h:905
struct bt_codec_qos * qos
Definition: audio.h:903
void * user_data
Definition: audio.h:918
Definition: audio.h:922
int(* qos)(struct bt_audio_stream *stream, const struct bt_codec_qos *qos)
Stream QoS request callback.
Definition: audio.h:976
int(* start)(struct bt_audio_stream *stream)
Stream Start request callback.
Definition: audio.h:1002
int(* reconfig)(struct bt_audio_stream *stream, uint8_t type, const struct bt_codec *codec, struct bt_codec_qos_pref *const pref)
Stream reconfig request callback.
Definition: audio.h:961
int(* stop)(struct bt_audio_stream *stream)
Stream Stop callback.
Definition: audio.h:1038
int(* disable)(struct bt_audio_stream *stream)
Stream Disable request callback.
Definition: audio.h:1027
int(* enable)(struct bt_audio_stream *stream, uint8_t meta_count, const struct bt_codec_data *meta)
Stream Enable request callback.
Definition: audio.h:990
int(* release)(struct bt_audio_stream *stream)
Stream release callback.
Definition: audio.h:1049
int(* publish_capability)(struct bt_conn *conn, uint8_t type, uint8_t index, struct bt_codec *const codec)
Publish Capability callback.
Definition: audio.h:1069
int(* config)(struct bt_conn *conn, const struct bt_audio_ep *ep, uint8_t type, const struct bt_codec *codec, struct bt_audio_stream **stream, struct bt_codec_qos_pref *const pref)
Endpoint config request callback.
Definition: audio.h:940
int(* metadata)(struct bt_audio_stream *stream, uint8_t meta_count, const struct bt_codec_data *meta)
Stream Metadata update request callback.
Definition: audio.h:1015
Codec configuration structure.
Definition: audio.h:72
struct bt_data data
Definition: audio.h:73
uint8_t value[CONFIG_BT_CODEC_MAX_DATA_LEN]
Definition: audio.h:74
Audio Stream Quality of Service Preference structure.
Definition: audio.h:431
bool unframed_supported
Unframed PDUs supported.
Definition: audio.h:437
uint32_t pd_min
Minimun Presentation Delay.
Definition: audio.h:453
uint32_t pref_pd_min
Preferred minimun Presentation Delay.
Definition: audio.h:463
uint32_t pd_max
Maximum Presentation Delay.
Definition: audio.h:460
uint8_t rtn
Definition: audio.h:443
uint8_t phy
Definition: audio.h:440
uint16_t latency
Definition: audio.h:446
uint32_t pref_pd_max
Preferred maximum Presentation Delay
Definition: audio.h:466
Codec QoS structure.
Definition: audio.h:376
uint8_t phy
Definition: audio.h:385
uint8_t dir
Definition: audio.h:382
uint8_t framing
Definition: audio.h:388
uint32_t pd
Definition: audio.h:402
uint16_t latency
Definition: audio.h:397
uint32_t interval
Definition: audio.h:400
uint8_t rtn
Definition: audio.h:391
uint16_t sdu
Definition: audio.h:394
Codec structure.
Definition: audio.h:201
struct bt_codec_data data[CONFIG_BT_CODEC_MAX_DATA_COUNT]
Definition: audio.h:211
uint16_t cid
Definition: audio.h:205
uint8_t meta_count
Definition: audio.h:213
uint8_t data_count
Definition: audio.h:209
uint8_t id
Definition: audio.h:203
uint16_t vid
Definition: audio.h:207
struct bt_codec_data meta[CONFIG_BT_CODEC_MAX_METADATA_COUNT]
Definition: audio.h:215
Bluetooth data.
Definition: bluetooth.h:293
GATT Discover Attributes parameters.
Definition: gatt.h:1319
GATT Read parameters.
Definition: gatt.h:1403
ISO Channel structure.
Definition: iso.h:110
Definition: bluetooth.h:1640
Definition: bluetooth.h:1677
Network buffer representation.
Definition: buf.h:915