Line data Source code
1 1 : /**
2 : * @file
3 : * @brief Header for Bluetooth GMAP 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_GMAP_LC3_PRESET_
11 : #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_GMAP_LC3_PRESET_
12 :
13 : /**
14 : * @brief Gaming Audio Profile (GMAP) LC3 Presets
15 : *
16 : * @defgroup bt_gmap_lc3_preset Gaming Audio Profile (GMAP) LC3 Presets
17 : *
18 : * @since 3.5
19 : * @version 0.8.0
20 : *
21 : * @ingroup bluetooth
22 : * @{
23 : *
24 : * These APIs provide presets for codec configuration and QoS based on values supplied by the
25 : * codec configurations from table 3.16 in the GMAP v1.0 specification
26 : */
27 :
28 : #include <zephyr/bluetooth/audio/audio.h>
29 : #include <zephyr/bluetooth/audio/bap.h>
30 : #include <zephyr/bluetooth/audio/bap_lc3_preset.h>
31 : #include <zephyr/bluetooth/audio/lc3.h>
32 :
33 : #ifdef __cplusplus
34 : extern "C" {
35 : #endif
36 :
37 : /**
38 : * @brief Helper to declare LC3 32_1_gr codec configuration
39 : *
40 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
41 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
42 : */
43 1 : #define BT_GMAP_LC3_PRESET_32_1_GR(_loc, _stream_context) \
44 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \
45 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
46 : _stream_context), \
47 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 60U, 1U, 15U, 10000U))
48 :
49 : /**
50 : * @brief Helper to declare LC3 32_2_gr codec configuration
51 : *
52 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
53 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
54 : */
55 1 : #define BT_GMAP_LC3_PRESET_32_2_GR(_loc, _stream_context) \
56 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \
57 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \
58 : _stream_context), \
59 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 80U, 1U, 20U, 10000U))
60 :
61 : /**
62 : * @brief Helper to declare LC3 48_1_gr codec configuration
63 : *
64 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
65 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
66 : */
67 1 : #define BT_GMAP_LC3_PRESET_48_1_GR(_loc, _stream_context) \
68 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
69 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
70 : _stream_context), \
71 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 15U, 10000U))
72 :
73 : /**
74 : * @brief Helper to declare LC3 48_2_gr codec configuration
75 : *
76 : * Mandatory to support as both unicast client and server
77 : *
78 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
79 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
80 : */
81 1 : #define BT_GMAP_LC3_PRESET_48_2_GR(_loc, _stream_context) \
82 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
83 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
84 : _stream_context), \
85 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 20U, 10000U))
86 :
87 : /**
88 : * @brief Helper to declare LC3 48_3_gr codec configuration
89 : *
90 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
91 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
92 : */
93 1 : #define BT_GMAP_LC3_PRESET_48_3_GR(_loc, _stream_context) \
94 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
95 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
96 : _stream_context), \
97 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 90U, 1U, 15U, 10000U))
98 :
99 : /**
100 : * @brief Helper to declare LC3 48_4_gr codec configuration
101 : *
102 : * Mandatory to support as unicast server
103 : *
104 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
105 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
106 : */
107 1 : #define BT_GMAP_LC3_PRESET_48_4_GR(_loc, _stream_context) \
108 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
109 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
110 : _stream_context), \
111 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 120U, 1U, 20U, 10000U))
112 :
113 : /**
114 : * @brief Helper to declare LC3 16_1_gs codec configuration
115 : *
116 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
117 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
118 : */
119 1 : #define BT_GMAP_LC3_PRESET_16_1_GS(_loc, _stream_context) \
120 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \
121 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \
122 : _stream_context), \
123 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 30U, 1U, 15U, 60000U))
124 :
125 : /**
126 : * @brief Helper to declare LC3 16_2_gs codec configuration
127 : *
128 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
129 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
130 : */
131 1 : #define BT_GMAP_LC3_PRESET_16_2_GS(_loc, _stream_context) \
132 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \
133 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \
134 : _stream_context), \
135 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 40U, 1U, 20U, 60000U))
136 :
137 : /**
138 : * @brief Helper to declare LC3 32_1_gs codec configuration
139 : *
140 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
141 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
142 : */
143 1 : #define BT_GMAP_LC3_PRESET_32_1_GS(_loc, _stream_context) \
144 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \
145 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \
146 : _stream_context), \
147 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 60U, 1U, 15U, 60000U))
148 :
149 : /**
150 : * @brief Helper to declare LC3 32_2_gs codec configuration
151 : *
152 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
153 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
154 : */
155 1 : #define BT_GMAP_LC3_PRESET_32_2_GS(_loc, _stream_context) \
156 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \
157 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \
158 : _stream_context), \
159 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 80U, 1U, 20U, 60000U))
160 :
161 : /**
162 : * @brief Helper to declare LC3 48_1_gs codec configuration
163 : *
164 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
165 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
166 : */
167 1 : #define BT_GMAP_LC3_PRESET_48_1_GS(_loc, _stream_context) \
168 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
169 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
170 : _stream_context), \
171 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 15U, 60000U))
172 :
173 : /**
174 : * @brief Helper to declare LC3 48_2_gs codec configuration
175 : *
176 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
177 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
178 : */
179 1 : #define BT_GMAP_LC3_PRESET_48_2_GS(_loc, _stream_context) \
180 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
181 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
182 : _stream_context), \
183 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 20U, 60000U))
184 :
185 : /* GMAP LC3 broadcast presets defined by table 3.22 in the GMAP v1.0 specification */
186 :
187 : /**
188 : * @brief Helper to declare LC3 48_1_g codec configuration
189 : *
190 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
191 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
192 : */
193 1 : #define BT_GMAP_LC3_PRESET_48_1_G(_loc, _stream_context) \
194 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
195 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \
196 : _stream_context), \
197 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 8U, 10000U))
198 :
199 : /**
200 : * @brief Helper to declare LC3 48_2_g codec configuration
201 : *
202 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
203 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
204 : */
205 1 : #define BT_GMAP_LC3_PRESET_48_2_G(_loc, _stream_context) \
206 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
207 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \
208 : _stream_context), \
209 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 10U, 10000U))
210 :
211 : /**
212 : * @brief Helper to declare LC3 48_3_g codec configuration
213 : *
214 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
215 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
216 : */
217 1 : #define BT_GMAP_LC3_PRESET_48_3_G(_loc, _stream_context) \
218 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
219 : BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \
220 : _stream_context), \
221 : BT_BAP_QOS_CFG_UNFRAMED(7500u, 90U, 1U, 8U, 10000U))
222 :
223 : /**
224 : * @brief Helper to declare LC3 48_4_g codec configuration
225 : *
226 : * @param _loc Audio channel location bitfield (@ref bt_audio_location)
227 : * @param _stream_context Stream context (``BT_AUDIO_CONTEXT_*``)
228 : */
229 1 : #define BT_GMAP_LC3_PRESET_48_4_G(_loc, _stream_context) \
230 : BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \
231 : BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \
232 : _stream_context), \
233 : BT_BAP_QOS_CFG_UNFRAMED(10000u, 120U, 1U, 10U, 10000U))
234 :
235 : #ifdef __cplusplus
236 : }
237 : #endif
238 : /** @} */
239 :
240 : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_GMAP_LC3_PRESET_ */
|