Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
bap.h
Go to the documentation of this file.
1
10
11#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_
12#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_
13
26
27#include <stdbool.h>
28#include <stddef.h>
29#include <stdint.h>
30
31#include <zephyr/autoconf.h>
39#include <zephyr/net_buf.h>
40#include <zephyr/sys/slist.h>
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
48#define BT_BAP_BASS_MAX_SUBGROUPS \
49 COND_CODE_1(CONFIG_BT_AUDIO, (CONFIG_BT_BAP_BASS_MAX_SUBGROUPS), (0))
50
52#define BT_BASE_MAX_SIZE (UINT8_MAX - 1 /* type */ - BT_UUID_SIZE_16)
53
55#define BT_BAP_INVALID_BROADCAST_ID 0xFFFFFFFFU
56
58#define BT_BAP_PD_UNSET 0xFFFFFFFFU
59
68#define BT_BAP_ADV_PARAM_CONN_QUICK \
69 BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_EXT_ADV, BT_GAP_MS_TO_ADV_INTERVAL(20), \
70 BT_GAP_MS_TO_ADV_INTERVAL(30), NULL)
71
77#define BT_BAP_ADV_PARAM_CONN_REDUCED \
78 BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_EXT_ADV, \
79 BT_GAP_MS_TO_ADV_INTERVAL(150), BT_GAP_MS_TO_ADV_INTERVAL(150), NULL)
80
89#define BT_BAP_CONN_PARAM_SHORT_7_5 \
90 BT_LE_CONN_PARAM(BT_GAP_US_TO_CONN_INTERVAL(7500), BT_GAP_MS_TO_CONN_INTERVAL(30), 0, \
91 BT_GAP_MS_TO_CONN_TIMEOUT(4000))
92
101#define BT_BAP_CONN_PARAM_SHORT_10 \
102 BT_LE_CONN_PARAM(BT_GAP_MS_TO_CONN_INTERVAL(10), BT_GAP_MS_TO_CONN_INTERVAL(30), 0, \
103 BT_GAP_MS_TO_CONN_TIMEOUT(4000))
104
110#define BT_BAP_CONN_PARAM_RELAXED \
111 BT_LE_CONN_PARAM(BT_GAP_MS_TO_CONN_INTERVAL(50), BT_GAP_MS_TO_CONN_INTERVAL(70), 0, \
112 BT_GAP_MS_TO_CONN_TIMEOUT(4000))
113
120#define BT_BAP_ADV_PARAM_BROADCAST_FAST \
121 BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV, BT_GAP_MS_TO_ADV_INTERVAL(60), \
122 BT_GAP_MS_TO_ADV_INTERVAL(60), NULL)
123
130#define BT_BAP_ADV_PARAM_BROADCAST_SLOW \
131 BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV, BT_GAP_MS_TO_ADV_INTERVAL(150), \
132 BT_GAP_MS_TO_ADV_INTERVAL(150), NULL)
133
140#define BT_BAP_PER_ADV_PARAM_BROADCAST_FAST \
141 BT_LE_PER_ADV_PARAM(BT_GAP_MS_TO_PER_ADV_INTERVAL(60), BT_GAP_MS_TO_PER_ADV_INTERVAL(60), \
142 BT_LE_PER_ADV_OPT_NONE)
143
150#define BT_BAP_PER_ADV_PARAM_BROADCAST_SLOW \
151 BT_LE_PER_ADV_PARAM(BT_GAP_MS_TO_PER_ADV_INTERVAL(150), \
152 BT_GAP_MS_TO_PER_ADV_INTERVAL(150), BT_LE_PER_ADV_OPT_NONE)
153
162#define BT_BAP_BASS_VALID_BIT_BITFIELD(_bis_bitfield) \
163 ((_bis_bitfield) == 0U || (_bis_bitfield) == BT_BAP_BIS_SYNC_NO_PREF || \
164 BT_ISO_VALID_BIS_BITFIELD(_bis_bitfield))
165
177#define BT_BAP_QOS_CFG(_interval, _framing, _phy, _sdu, _rtn, _latency, _pd) \
178 ((struct bt_bap_qos_cfg){ \
179 .interval = _interval, \
180 .framing = _framing, \
181 .phy = _phy, \
182 .sdu = _sdu, \
183 .rtn = _rtn, \
184 IF_ENABLED(UTIL_OR(IS_ENABLED(CONFIG_BT_BAP_BROADCAST_SOURCE), \
185 IS_ENABLED(CONFIG_BT_BAP_UNICAST)), \
186 (.latency = _latency,)) \
187 .pd = _pd, \
188 })
189
197
199enum {
206};
207
217#define BT_BAP_QOS_CFG_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
218 BT_BAP_QOS_CFG(_interval, BT_BAP_QOS_CFG_FRAMING_UNFRAMED, BT_BAP_QOS_CFG_2M, _sdu, _rtn, \
219 _latency, _pd)
220
230#define BT_BAP_QOS_CFG_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
231 BT_BAP_QOS_CFG(_interval, BT_BAP_QOS_CFG_FRAMING_FRAMED, BT_BAP_QOS_CFG_2M, _sdu, _rtn, \
232 _latency, _pd)
233
247
255 struct {
258
266
274
281
282#if defined(CONFIG_BT_BAP_BROADCAST_SOURCE) || defined(CONFIG_BT_BAP_UNICAST) || \
283 defined(__DOXYGEN__)
290#endif /* CONFIG_BT_BAP_BROADCAST_SOURCE || CONFIG_BT_BAP_UNICAST */
291
298
299#if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__)
312
319
328#endif /* CONFIG_BT_ISO_TEST_PARAMS */
329 };
330};
331
344#define BT_BAP_QOS_CFG_PREF(_unframed_supported, _phy, _rtn, _latency, _pd_min, _pd_max, \
345 _pref_pd_min, _pref_pd_max) \
346 { \
347 .unframed_supported = _unframed_supported, .phy = _phy, .rtn = _rtn, \
348 .latency = _latency, .pd_min = _pd_min, .pd_max = _pd_max, \
349 .pref_pd_min = _pref_pd_min, .pref_pd_max = _pref_pd_max, \
350 }
351
419
437
452
461
463#define BT_BAP_PA_INTERVAL_UNKNOWN 0xFFFF
464
471#define BT_BAP_BIS_SYNC_NO_PREF 0xFFFFFFFF
473#define BT_BAP_BIS_SYNC_FAILED 0xFFFFFFFF
474
498
537
569
621
629#define BT_BAP_ASCS_RSP(c, r) (struct bt_bap_ascs_rsp) { .code = c, .reason = r }
630
632struct bt_bap_broadcast_source;
633
635struct bt_bap_broadcast_sink;
636
638struct bt_bap_unicast_group;
639
641struct bt_bap_ep;
642
647
650
651#if defined(CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE) || defined(__DOXYGEN__)
653 uint8_t metadata[CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE];
654#endif /* CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE */
655};
656
694
710 void (*recv_state_updated)(struct bt_conn *conn,
711 const struct bt_bap_scan_delegator_recv_state *recv_state);
712
729 int (*pa_sync_req)(struct bt_conn *conn,
730 const struct bt_bap_scan_delegator_recv_state *recv_state,
731 bool past_avail, uint16_t pa_interval);
732
746 int (*pa_sync_term_req)(struct bt_conn *conn,
747 const struct bt_bap_scan_delegator_recv_state *recv_state);
748
760 void (*broadcast_code)(struct bt_conn *conn,
761 const struct bt_bap_scan_delegator_recv_state *recv_state,
784 int (*bis_sync_req)(struct bt_conn *conn,
785 const struct bt_bap_scan_delegator_recv_state *recv_state,
796 void (*scanning_state)(struct bt_conn *conn, bool is_scanning);
810 int (*add_source)(struct bt_conn *conn,
811 const struct bt_bap_scan_delegator_recv_state *recv_state);
812
826 int (*modify_source)(struct bt_conn *conn,
827 const struct bt_bap_scan_delegator_recv_state *recv_state);
828
842 int (*remove_source)(struct bt_conn *conn, uint8_t src_id);
843};
844
849
852
855
858
861
864
868 struct bt_bap_ep *paired_ep;
869
872};
873
883int bt_bap_ep_get_info(const struct bt_bap_ep *ep, struct bt_bap_ep_info *info);
884
899struct bt_conn *bt_bap_ep_get_conn(const struct bt_bap_ep *ep);
900
911 struct bt_conn *conn;
912
914 struct bt_bap_ep *ep;
915
918
921
924
927
934
936 void *group;
937
938#if defined(CONFIG_BT_BAP_DEBUG_STREAM_SEQ_NUM) || defined(__DOXYGEN__)
940 uint16_t _prev_seq_num;
941#endif /* CONFIG_BT_BAP_DEBUG_STREAM_SEQ_NUM */
942
945 sys_snode_t _node;
947};
948
951#if defined(CONFIG_BT_BAP_UNICAST) || defined(__DOXYGEN__)
960 void (*configured)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg_pref *pref);
961
970 void (*qos_set)(struct bt_bap_stream *stream);
971
979 void (*enabled)(struct bt_bap_stream *stream);
980
989 void (*metadata_updated)(struct bt_bap_stream *stream);
990
998 void (*disabled)(struct bt_bap_stream *stream);
999
1008 void (*released)(struct bt_bap_stream *stream);
1009#endif /* CONFIG_BT_BAP_UNICAST */
1010
1019 void (*started)(struct bt_bap_stream *stream);
1020
1029 void (*stopped)(struct bt_bap_stream *stream, uint8_t reason);
1030
1031#if defined(CONFIG_BT_AUDIO_RX) || defined(__DOXYGEN__)
1043 void (*recv)(struct bt_bap_stream *stream, const struct bt_iso_recv_info *info,
1044 struct net_buf *buf);
1045#endif /* CONFIG_BT_AUDIO_RX */
1046
1047#if defined(CONFIG_BT_AUDIO_TX) || defined(__DOXYGEN__)
1060 void (*sent)(struct bt_bap_stream *stream);
1061#endif /* CONFIG_BT_AUDIO_TX */
1062
1075 void (*connected)(struct bt_bap_stream *stream);
1076
1089 void (*disconnected)(struct bt_bap_stream *stream, uint8_t reason);
1090};
1091
1107
1117
1131int bt_bap_stream_config(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_bap_ep *ep,
1132 struct bt_audio_codec_cfg *codec_cfg);
1133
1147int bt_bap_stream_reconfig(struct bt_bap_stream *stream, struct bt_audio_codec_cfg *codec_cfg);
1148
1161int bt_bap_stream_qos(struct bt_conn *conn, struct bt_bap_unicast_group *group);
1162
1177int bt_bap_stream_enable(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len);
1178
1190int bt_bap_stream_metadata(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len);
1191
1205
1230
1254
1279
1294
1309int bt_bap_stream_send(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num);
1310
1327int bt_bap_stream_send_ts(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num,
1328 uint32_t ts);
1329
1349
1355
1376 int (*config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir,
1377 const struct bt_audio_codec_cfg *codec_cfg, struct bt_bap_stream **stream,
1378 struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp);
1379
1396 int (*reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir,
1397 const struct bt_audio_codec_cfg *codec_cfg,
1398 struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp);
1399
1413 int (*qos)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg *qos,
1414 struct bt_bap_ascs_rsp *rsp);
1415
1429 int (*enable)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len,
1430 struct bt_bap_ascs_rsp *rsp);
1431
1443 int (*start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
1444
1458 int (*metadata)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len,
1459 struct bt_bap_ascs_rsp *rsp);
1460
1472 int (*disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
1473
1485 int (*stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
1486
1499 int (*release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
1500};
1501
1513
1529
1543
1558
1566typedef void (*bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data);
1567
1575void bt_bap_unicast_server_foreach_ep(struct bt_conn *conn, bt_bap_ep_func_t func, void *user_data);
1576
1587int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream,
1588 struct bt_audio_codec_cfg *codec_cfg,
1589 const struct bt_bap_qos_cfg_pref *qos_pref);
1590 /* End of group bt_bap_unicast_server */
1592
1598
1607
1621
1626
1629
1638
1639#if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__)
1649
1659
1668#endif /* CONFIG_BT_ISO_TEST_PARAMS */
1669};
1670
1685 struct bt_bap_unicast_group **unicast_group);
1686
1702int bt_bap_unicast_group_reconfig(struct bt_bap_unicast_group *unicast_group,
1703 const struct bt_bap_unicast_group_param *param);
1704
1724int bt_bap_unicast_group_add_streams(struct bt_bap_unicast_group *unicast_group,
1726 size_t num_param);
1727
1738int bt_bap_unicast_group_delete(struct bt_bap_unicast_group *unicast_group);
1739
1749 void *user_data);
1750
1762int bt_bap_unicast_group_foreach_stream(struct bt_bap_unicast_group *unicast_group,
1764 void *user_data);
1765
1780
1790int bt_bap_unicast_group_get_info(const struct bt_bap_unicast_group *unicast_group,
1791 struct bt_bap_unicast_group_info *info);
1792
1807 void (*location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc);
1808
1821 void (*available_contexts)(struct bt_conn *conn, enum bt_audio_context snk_ctx,
1822 enum bt_audio_context src_ctx);
1823
1833 void (*config)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1834 enum bt_bap_ascs_reason reason);
1835
1848 void (*qos)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1849 enum bt_bap_ascs_reason reason);
1850
1861 void (*enable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1862 enum bt_bap_ascs_reason reason);
1863
1876 void (*start)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1877 enum bt_bap_ascs_reason reason);
1878
1891 void (*stop)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1892 enum bt_bap_ascs_reason reason);
1893
1904 void (*disable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1905 enum bt_bap_ascs_reason reason);
1906
1917 void (*metadata)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1918 enum bt_bap_ascs_reason reason);
1919
1930 void (*release)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1931 enum bt_bap_ascs_reason reason);
1932
1947 void (*pac_record)(struct bt_conn *conn, enum bt_audio_dir dir,
1948 const struct bt_audio_codec_cap *codec_cap);
1949
1961 void (*endpoint)(struct bt_conn *conn, enum bt_audio_dir dir, struct bt_bap_ep *ep);
1962
1975 void (*discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir);
1976
1979 sys_snode_t _node;
1981};
1982
1993
2003
2013int bt_bap_unicast_client_discover(struct bt_conn *conn, enum bt_audio_dir dir);
2014 /* End of group bt_bap_unicast_client */
2022
2024struct bt_bap_base_subgroup;
2026struct bt_bap_base;
2027
2037
2047
2056const struct bt_bap_base *bt_bap_base_get_base_from_ad(const struct bt_data *ad);
2057
2066int bt_bap_base_get_size(const struct bt_bap_base *base);
2067
2076int bt_bap_base_get_pres_delay(const struct bt_bap_base *base);
2077
2086int bt_bap_base_get_subgroup_count(const struct bt_bap_base *base);
2087
2097int bt_bap_base_get_bis_indexes(const struct bt_bap_base *base, uint32_t *bis_indexes);
2098
2110int bt_bap_base_foreach_subgroup(const struct bt_bap_base *base,
2111 bool (*func)(const struct bt_bap_base_subgroup *subgroup,
2112 void *user_data),
2113 void *user_data);
2114
2124int bt_bap_base_get_subgroup_codec_id(const struct bt_bap_base_subgroup *subgroup,
2125 struct bt_bap_base_codec_id *codec_id);
2126
2136int bt_bap_base_get_subgroup_codec_data(const struct bt_bap_base_subgroup *subgroup,
2137 uint8_t **data);
2138
2148int bt_bap_base_get_subgroup_codec_meta(const struct bt_bap_base_subgroup *subgroup,
2149 uint8_t **meta);
2150
2161int bt_bap_base_subgroup_codec_to_codec_cfg(const struct bt_bap_base_subgroup *subgroup,
2162 struct bt_audio_codec_cfg *codec_cfg);
2163
2172int bt_bap_base_get_subgroup_bis_count(const struct bt_bap_base_subgroup *subgroup);
2173
2183int bt_bap_base_subgroup_get_bis_indexes(const struct bt_bap_base_subgroup *subgroup,
2184 uint32_t *bis_indexes);
2185
2197int bt_bap_base_subgroup_foreach_bis(const struct bt_bap_base_subgroup *subgroup,
2198 bool (*func)(const struct bt_bap_base_subgroup_bis *bis,
2199 void *user_data),
2200 void *user_data);
2201
2216 struct bt_audio_codec_cfg *codec_cfg);
2217 /* End of group bt_bap_broadcast */
2219
2226
2238 void (*started)(struct bt_bap_broadcast_source *source);
2239
2246 void (*stopped)(struct bt_bap_broadcast_source *source, uint8_t reason);
2247
2250 sys_snode_t _node;
2252};
2253
2264
2275
2280
2281#if CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0 || defined(__DOXYGEN__)
2287 size_t data_len;
2288
2291#endif /* CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0 */
2292};
2293
2305
2310
2313
2316
2325
2328
2340
2341#if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__)
2350
2359
2368#endif /* CONFIG_BT_ISO_TEST_PARAMS */
2369};
2370
2388 struct bt_bap_broadcast_source **source);
2389
2409int bt_bap_broadcast_source_reconfig(struct bt_bap_broadcast_source *source,
2410 struct bt_bap_broadcast_source_param *param);
2411
2424int bt_bap_broadcast_source_update_metadata(struct bt_bap_broadcast_source *source,
2425 const uint8_t meta[], size_t meta_len);
2426
2438int bt_bap_broadcast_source_start(struct bt_bap_broadcast_source *source,
2439 struct bt_le_ext_adv *adv);
2440
2451int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source);
2452
2463int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source);
2464
2479int bt_bap_broadcast_source_get_base(struct bt_bap_broadcast_source *source,
2480 struct net_buf_simple *base_buf);
2481
2492 void *user_data);
2493
2505int bt_bap_broadcast_source_foreach_stream(struct bt_bap_broadcast_source *source,
2507 void *user_data); /* End of bt_bap_broadcast_source */
2509
2516
2529 void (*base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base,
2530 size_t base_size);
2531
2544 void (*syncable)(struct bt_bap_broadcast_sink *sink, const struct bt_iso_biginfo *biginfo);
2545
2552 void (*started)(struct bt_bap_broadcast_sink *sink);
2553
2560 void (*stopped)(struct bt_bap_broadcast_sink *sink, uint8_t reason);
2561
2564 sys_snode_t _node;
2566};
2567
2582
2601int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t broadcast_id,
2602 struct bt_bap_broadcast_sink **sink);
2603
2623int bt_bap_broadcast_sink_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield,
2624 struct bt_bap_stream *streams[],
2625 const uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]);
2626
2637int bt_bap_broadcast_sink_stop(struct bt_bap_broadcast_sink *sink);
2638
2650int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink);
2651 /* End of group bt_bap_broadcast_sink */
2653
2668
2678
2691 enum bt_bap_pa_state pa_state);
2692
2703
2732
2747
2770
2785
2800
2812 const struct bt_bap_scan_delegator_recv_state *recv_state, void *user_data);
2813
2821 void *user_data);
2822
2832 bt_bap_scan_delegator_state_func_t func, void *user_data);
2833
2834/******************************** CLIENT API ********************************/
2835
2842typedef void (*bt_bap_broadcast_assistant_write_cb)(struct bt_conn *conn,
2843 int err);
2844
2860 void (*discover)(struct bt_conn *conn, int err,
2861 uint8_t recv_state_count);
2862
2872 void (*scan)(const struct bt_le_scan_recv_info *info,
2873 uint32_t broadcast_id);
2874
2884 void (*recv_state)(struct bt_conn *conn, int err,
2886
2893 void (*recv_state_removed)(struct bt_conn *conn, uint8_t src_id);
2894
2901 void (*scan_start)(struct bt_conn *conn, int err);
2902
2909 void (*scan_stop)(struct bt_conn *conn, int err);
2910
2917 void (*add_src)(struct bt_conn *conn, int err);
2918
2925 void (*mod_src)(struct bt_conn *conn, int err);
2926
2933 void (*broadcast_code)(struct bt_conn *conn, int err);
2934
2941 void (*rem_src)(struct bt_conn *conn, int err);
2942
2945 sys_snode_t _node;
2947};
2948
2964int bt_bap_broadcast_assistant_discover(struct bt_conn *conn);
2965
2991 bool start_scan);
2992
3007
3018
3029
3030
3062
3077 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_add_src_param *param);
3078
3100
3115 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_mod_src_param *param);
3116
3132 struct bt_conn *conn, uint8_t src_id,
3133 const uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]);
3134
3148int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id);
3149
3165 /* end of bt_bap */
3167
3168#ifdef __cplusplus
3169}
3170#endif
3171
3172#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_ */
Bluetooth device address definitions and utilities.
Bluetooth Audio handling.
Bluetooth subsystem core APIs.
Bluetooth UUID handling.
Bluetooth connection handling.
Bluetooth Generic Access Profile defines and Assigned Numbers.
bt_audio_location
Location values for BT Audio.
Definition assigned_numbers.h:1361
bt_audio_metadata_type
Codec metadata type IDs.
Definition assigned_numbers.h:1280
bt_audio_context
Audio Context Type for Generic Audio.
Definition assigned_numbers.h:1151
bt_audio_dir
Audio direction from the perspective of the BAP Unicast Server / BAP Broadcast Sink.
Definition audio.h:317
int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t broadcast_id, struct bt_bap_broadcast_sink **sink)
Create a Broadcast Sink from a periodic advertising sync.
int bt_bap_broadcast_sink_stop(struct bt_bap_broadcast_sink *sink)
Stop audio broadcast sink.
int bt_bap_broadcast_sink_register_cb(struct bt_bap_broadcast_sink_cb *cb)
Register Broadcast sink callbacks.
int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink)
Release a broadcast sink.
int bt_bap_broadcast_sink_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield, struct bt_bap_stream *streams[], const uint8_t broadcast_code[0x10])
Sync to a broadcaster's audio.
int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source)
Delete audio broadcast source.
bool(* bt_bap_broadcast_source_foreach_stream_func_t)(struct bt_bap_stream *stream, void *user_data)
Callback function for bt_bap_broadcast_source_foreach_stream().
Definition bap.h:2491
int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source)
Stop audio broadcast source.
int bt_bap_broadcast_source_foreach_stream(struct bt_bap_broadcast_source *source, bt_bap_broadcast_source_foreach_stream_func_t func, void *user_data)
Iterate through all streams in a broadcast source.
int bt_bap_broadcast_source_reconfig(struct bt_bap_broadcast_source *source, struct bt_bap_broadcast_source_param *param)
Reconfigure audio broadcast source.
int bt_bap_broadcast_source_start(struct bt_bap_broadcast_source *source, struct bt_le_ext_adv *adv)
Start audio broadcast source.
int bt_bap_broadcast_source_register_cb(struct bt_bap_broadcast_source_cb *cb)
Registers callbacks for Broadcast Sources.
int bt_bap_broadcast_source_unregister_cb(struct bt_bap_broadcast_source_cb *cb)
Unregisters callbacks for Broadcast Sources.
int bt_bap_broadcast_source_create(struct bt_bap_broadcast_source_param *param, struct bt_bap_broadcast_source **source)
Create audio broadcast source.
int bt_bap_broadcast_source_get_base(struct bt_bap_broadcast_source *source, struct net_buf_simple *base_buf)
Get the Broadcast Audio Stream Endpoint of a broadcast source.
int bt_bap_broadcast_source_update_metadata(struct bt_bap_broadcast_source *source, const uint8_t meta[], size_t meta_len)
Modify the metadata of an audio broadcast source.
int bt_bap_base_get_subgroup_bis_count(const struct bt_bap_base_subgroup *subgroup)
Get the BIS count of a subgroup.
int bt_bap_base_get_subgroup_codec_data(const struct bt_bap_base_subgroup *subgroup, uint8_t **data)
Get the codec configuration data of a subgroup.
const struct bt_bap_base * bt_bap_base_get_base_from_ad(const struct bt_data *ad)
Generate a pointer to a BASE from periodic advertising data.
int bt_bap_base_subgroup_get_bis_indexes(const struct bt_bap_base_subgroup *subgroup, uint32_t *bis_indexes)
Get all BIS indexes of a subgroup.
int bt_bap_base_subgroup_foreach_bis(const struct bt_bap_base_subgroup *subgroup, bool(*func)(const struct bt_bap_base_subgroup_bis *bis, void *user_data), void *user_data)
Iterate on all BIS in the subgroup.
int bt_bap_base_get_size(const struct bt_bap_base *base)
Get the size of a BASE.
int bt_bap_base_foreach_subgroup(const struct bt_bap_base *base, bool(*func)(const struct bt_bap_base_subgroup *subgroup, void *user_data), void *user_data)
Iterate on all subgroups in the BASE.
int bt_bap_base_get_bis_indexes(const struct bt_bap_base *base, uint32_t *bis_indexes)
Get all BIS indexes of a BASE.
int bt_bap_base_subgroup_codec_to_codec_cfg(const struct bt_bap_base_subgroup *subgroup, struct bt_audio_codec_cfg *codec_cfg)
Store subgroup codec data in a Codec config parsing APIs.
int bt_bap_base_subgroup_bis_codec_to_codec_cfg(const struct bt_bap_base_subgroup_bis *bis, struct bt_audio_codec_cfg *codec_cfg)
Store BIS codec configuration data in a Codec config parsing APIs.
int bt_bap_base_get_subgroup_count(const struct bt_bap_base *base)
Get the subgroup count of a BASE.
int bt_bap_base_get_subgroup_codec_id(const struct bt_bap_base_subgroup *subgroup, struct bt_bap_base_codec_id *codec_id)
Get the codec ID of a subgroup.
int bt_bap_base_get_pres_delay(const struct bt_bap_base *base)
Get the presentation delay value of a BASE.
int bt_bap_base_get_subgroup_codec_meta(const struct bt_bap_base_subgroup *subgroup, uint8_t **meta)
Get the codec metadata of a subgroup.
int bt_bap_unicast_group_delete(struct bt_bap_unicast_group *unicast_group)
Delete audio unicast group.
int bt_bap_unicast_group_get_info(const struct bt_bap_unicast_group *unicast_group, struct bt_bap_unicast_group_info *info)
Return structure holding information of unicast group.
int bt_bap_unicast_group_add_streams(struct bt_bap_unicast_group *unicast_group, struct bt_bap_unicast_group_stream_pair_param params[], size_t num_param)
Add streams to a unicast group as a unicast client.
int bt_bap_unicast_group_create(struct bt_bap_unicast_group_param *param, struct bt_bap_unicast_group **unicast_group)
Create unicast group.
int bt_bap_unicast_group_reconfig(struct bt_bap_unicast_group *unicast_group, const struct bt_bap_unicast_group_param *param)
Reconfigure unicast group.
int bt_bap_unicast_client_discover(struct bt_conn *conn, enum bt_audio_dir dir)
Discover remote capabilities and endpoints.
int bt_bap_unicast_group_foreach_stream(struct bt_bap_unicast_group *unicast_group, bt_bap_unicast_group_foreach_stream_func_t func, void *user_data)
Iterate through all streams in a unicast group.
int bt_bap_unicast_client_register_cb(struct bt_bap_unicast_client_cb *cb)
Register unicast client callbacks.
int bt_bap_unicast_client_unregister_cb(struct bt_bap_unicast_client_cb *cb)
Unregister unicast client callbacks.
bool(* bt_bap_unicast_group_foreach_stream_func_t)(struct bt_bap_stream *stream, void *user_data)
Callback function for bt_bap_unicast_group_foreach_stream().
Definition bap.h:1748
void bt_bap_unicast_server_foreach_ep(struct bt_conn *conn, bt_bap_ep_func_t func, void *user_data)
Iterate through all endpoints of the given connection.
int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_audio_codec_cfg *codec_cfg, const struct bt_bap_qos_cfg_pref *qos_pref)
Initialize and configure a new ASE.
int bt_bap_unicast_server_unregister(void)
Unregister the Unicast Server.
int bt_bap_unicast_server_register_cb(const struct bt_bap_unicast_server_cb *cb)
Register unicast server callbacks.
int bt_bap_unicast_server_register(const struct bt_bap_unicast_server_register_param *param)
Register the Unicast Server.
void(* bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data)
The callback function called for each endpoint.
Definition bap.h:1566
int bt_bap_unicast_server_unregister_cb(const struct bt_bap_unicast_server_cb *cb)
Unregister unicast server callbacks.
int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id)
Remove a source from the server.
int bt_bap_stream_metadata(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len)
Change Audio Stream Metadata.
int bt_bap_stream_disable(struct bt_bap_stream *stream)
Disable Audio Stream.
int bt_bap_stream_enable(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len)
Enable Audio Stream.
bt_bap_bass_att_err
Broadcast Audio Scan Service (BASS) specific ATT error codes.
Definition bap.h:454
int bt_bap_stream_config(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_bap_ep *ep, struct bt_audio_codec_cfg *codec_cfg)
Configure Audio Stream.
bt_bap_qos_cfg_framing
QoS Framing.
Definition bap.h:191
int bt_bap_scan_delegator_set_pa_state(uint8_t src_id, enum bt_bap_pa_state pa_state)
Set the periodic advertising sync state to syncing.
#define BT_BAP_BASS_MAX_SUBGROUPS
Maximum number of subgroups supported in the BAP Scan Delegator API.
Definition bap.h:48
int bt_bap_stream_get_tx_sync(struct bt_bap_stream *stream, struct bt_iso_tx_info *info)
Get ISO transmission timing info for a Basic Audio Profile stream.
void(* bt_bap_broadcast_assistant_write_cb)(struct bt_conn *conn, int err)
Callback function for writes.
Definition bap.h:2842
struct bt_conn * bt_bap_ep_get_conn(const struct bt_bap_ep *ep)
Get the pointer to the ACL connection of an endpoint.
bt_bap_big_enc_state
Broadcast Isochronous Group encryption state reported by the Scan Delegator.
Definition bap.h:439
int bt_bap_stream_send(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num)
Send data to Audio stream without timestamp.
int bt_bap_broadcast_assistant_unregister_cb(struct bt_bap_broadcast_assistant_cb *cb)
Unregisters the callbacks used by the Broadcast Audio Scan Service client.
int bt_bap_scan_delegator_rem_src(uint8_t src_id)
Remove a receive state source.
int bt_bap_scan_delegator_add_src(const struct bt_bap_scan_delegator_add_src_param *param)
Add a receive state source locally.
int bt_bap_scan_delegator_unregister(void)
unregister the Basic Audio Profile Scan Delegator and BASS.
int bt_bap_scan_delegator_register(struct bt_bap_scan_delegator_cb *cb)
Register the Basic Audio Profile Scan Delegator and BASS.
int bt_bap_broadcast_assistant_scan_stop(struct bt_conn *conn)
Stop remote scanning for BISes for a server.
int bt_bap_scan_delegator_set_bis_sync_state(uint8_t src_id, uint32_t bis_synced[Z_COND_CODE_1(CONFIG_BT_AUDIO,(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS),(0))])
Set the sync state of a receive state in the server.
int bt_bap_stream_start(struct bt_bap_stream *stream)
Start Audio Stream.
int bt_bap_broadcast_assistant_read_recv_state(struct bt_conn *conn, uint8_t idx)
Read the specified receive state from the server.
int bt_bap_broadcast_assistant_scan_start(struct bt_conn *conn, bool start_scan)
Scan start for BISes for a remote server.
bt_bap_ascs_reason
Response Reasons.
Definition bap.h:545
bt_bap_ascs_rsp_code
Response Status Code.
Definition bap.h:505
int bt_bap_stream_send_ts(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num, uint32_t ts)
Send data to Audio stream with timestamp.
int bt_bap_stream_connect(struct bt_bap_stream *stream)
Connect unicast audio stream.
int bt_bap_broadcast_assistant_mod_src(struct bt_conn *conn, const struct bt_bap_broadcast_assistant_mod_src_param *param)
Modify a source on the server.
int bt_bap_stream_reconfig(struct bt_bap_stream *stream, struct bt_audio_codec_cfg *codec_cfg)
Reconfigure Audio Stream.
int bt_bap_stream_release(struct bt_bap_stream *stream)
Release Audio Stream.
void bt_bap_stream_cb_register(struct bt_bap_stream *stream, struct bt_bap_stream_ops *ops)
Register Audio callbacks for a stream.
int bt_bap_broadcast_assistant_discover(struct bt_conn *conn)
Discover Broadcast Audio Scan Service on the server.
void bt_bap_scan_delegator_foreach_state(bt_bap_scan_delegator_state_func_t func, void *user_data)
Iterate through all existing receive states.
int bt_bap_broadcast_assistant_register_cb(struct bt_bap_broadcast_assistant_cb *cb)
Registers the callbacks used by Broadcast Audio Scan Service client.
const struct bt_bap_scan_delegator_recv_state * bt_bap_scan_delegator_find_state(bt_bap_scan_delegator_state_func_t func, void *user_data)
Find and return a receive state based on a compare function.
int bt_bap_broadcast_assistant_set_broadcast_code(struct bt_conn *conn, uint8_t src_id, const uint8_t broadcast_code[0x10])
Set a broadcast code to the specified receive state.
int bt_bap_scan_delegator_mod_src(const struct bt_bap_scan_delegator_mod_src_param *param)
Add a receive state source locally.
bt_bap_pa_state
Periodic advertising state reported by the Scan Delegator.
Definition bap.h:421
int bt_bap_stream_qos(struct bt_conn *conn, struct bt_bap_unicast_group *group)
Configure Audio Stream QoS.
int bt_bap_broadcast_assistant_add_src(struct bt_conn *conn, const struct bt_bap_broadcast_assistant_add_src_param *param)
Add a source on the server.
int bt_bap_stream_stop(struct bt_bap_stream *stream)
Stop Audio Stream.
int bt_bap_ep_get_info(const struct bt_bap_ep *ep, struct bt_bap_ep_info *info)
Return structure holding information of audio stream endpoint.
bt_bap_ep_state
Endpoint states.
Definition bap.h:476
bool(* bt_bap_scan_delegator_state_func_t)(const struct bt_bap_scan_delegator_recv_state *recv_state, void *user_data)
Callback function for Scan Delegator receive state search functions.
Definition bap.h:2811
@ BT_BAP_BASS_ERR_OPCODE_NOT_SUPPORTED
Opcode not supported.
Definition bap.h:456
@ BT_BAP_BASS_ERR_INVALID_SRC_ID
Invalid source ID supplied.
Definition bap.h:459
@ BT_BAP_QOS_CFG_FRAMING_FRAMED
Packets are always framed.
Definition bap.h:195
@ BT_BAP_QOS_CFG_FRAMING_UNFRAMED
Packets may be framed or unframed.
Definition bap.h:193
@ BT_BAP_BIG_ENC_STATE_BCODE_REQ
The Broadcast Isochronous Group broadcast code requested.
Definition bap.h:444
@ BT_BAP_BIG_ENC_STATE_NO_ENC
The Broadcast Isochronous Group not encrypted.
Definition bap.h:441
@ BT_BAP_BIG_ENC_STATE_BAD_CODE
The Broadcast Isochronous Group bad broadcast code.
Definition bap.h:450
@ BT_BAP_BIG_ENC_STATE_DEC
The Broadcast Isochronous Group decrypted.
Definition bap.h:447
@ BT_BAP_QOS_CFG_CODED
LE Coded PHY.
Definition bap.h:205
@ BT_BAP_QOS_CFG_2M
LE 2M PHY.
Definition bap.h:203
@ BT_BAP_QOS_CFG_1M
LE 1M PHY.
Definition bap.h:201
@ BT_BAP_ASCS_REASON_NONE
No reason.
Definition bap.h:547
@ BT_BAP_ASCS_REASON_PD
Presendation delay.
Definition bap.h:565
@ BT_BAP_ASCS_REASON_FRAMING
Framing.
Definition bap.h:555
@ BT_BAP_ASCS_REASON_CODEC_DATA
Codec configuration.
Definition bap.h:551
@ BT_BAP_ASCS_REASON_SDU
Maximum SDU size.
Definition bap.h:559
@ BT_BAP_ASCS_REASON_CODEC
Codec ID.
Definition bap.h:549
@ BT_BAP_ASCS_REASON_PHY
PHY.
Definition bap.h:557
@ BT_BAP_ASCS_REASON_LATENCY
Max transport latency.
Definition bap.h:563
@ BT_BAP_ASCS_REASON_CIS
Invalid CIS mapping.
Definition bap.h:567
@ BT_BAP_ASCS_REASON_RTN
RTN.
Definition bap.h:561
@ BT_BAP_ASCS_REASON_INTERVAL
SDU interval.
Definition bap.h:553
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE_STATE
Invalid ASE state.
Definition bap.h:515
@ BT_BAP_ASCS_RSP_CODE_METADATA_INVALID
Invalid metadata.
Definition bap.h:531
@ BT_BAP_ASCS_RSP_CODE_NOT_SUPPORTED
Server did not support operation by client.
Definition bap.h:509
@ BT_BAP_ASCS_RSP_CODE_CONF_UNSUPPORTED
Configuration parameters not supported by server.
Definition bap.h:521
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE
Invalid ASE ID.
Definition bap.h:513
@ BT_BAP_ASCS_RSP_CODE_INVALID_DIR
Invalid operation for direction.
Definition bap.h:517
@ BT_BAP_ASCS_RSP_CODE_CONF_INVALID
Invalid Configuration parameters.
Definition bap.h:525
@ BT_BAP_ASCS_RSP_CODE_CAP_UNSUPPORTED
Capabilities not supported by server.
Definition bap.h:519
@ BT_BAP_ASCS_RSP_CODE_NO_MEM
Server has insufficient resources.
Definition bap.h:533
@ BT_BAP_ASCS_RSP_CODE_METADATA_REJECTED
Metadata rejected by server.
Definition bap.h:529
@ BT_BAP_ASCS_RSP_CODE_UNSPECIFIED
Unspecified error.
Definition bap.h:535
@ BT_BAP_ASCS_RSP_CODE_INVALID_LENGTH
Server rejected due to invalid operation length.
Definition bap.h:511
@ BT_BAP_ASCS_RSP_CODE_METADATA_UNSUPPORTED
Unsupported metadata.
Definition bap.h:527
@ BT_BAP_ASCS_RSP_CODE_SUCCESS
Server completed operation successfully.
Definition bap.h:507
@ BT_BAP_ASCS_RSP_CODE_CONF_REJECTED
Configuration parameters rejected by server.
Definition bap.h:523
@ BT_BAP_PA_STATE_NOT_SYNCED
The periodic advertising has not been synchronized.
Definition bap.h:423
@ BT_BAP_PA_STATE_FAILED
Failed to synchronized to periodic advertising.
Definition bap.h:432
@ BT_BAP_PA_STATE_SYNCED
Synchronized to periodic advertising.
Definition bap.h:429
@ BT_BAP_PA_STATE_INFO_REQ
Waiting for SyncInfo from Broadcast Assistant.
Definition bap.h:426
@ BT_BAP_PA_STATE_NO_PAST
No periodic advertising sync transfer receiver from Broadcast Assistant.
Definition bap.h:435
@ BT_BAP_EP_STATE_ENABLING
Audio Stream Endpoint Enabling state.
Definition bap.h:487
@ BT_BAP_EP_STATE_IDLE
Audio Stream Endpoint Idle state.
Definition bap.h:478
@ BT_BAP_EP_STATE_CODEC_CONFIGURED
Audio Stream Endpoint Codec Configured state.
Definition bap.h:481
@ BT_BAP_EP_STATE_RELEASING
Audio Stream Endpoint Streaming state.
Definition bap.h:496
@ BT_BAP_EP_STATE_QOS_CONFIGURED
Audio Stream Endpoint QoS Configured state.
Definition bap.h:484
@ BT_BAP_EP_STATE_DISABLING
Audio Stream Endpoint Disabling state.
Definition bap.h:493
@ BT_BAP_EP_STATE_STREAMING
Audio Stream Endpoint Streaming state.
Definition bap.h:490
#define BT_ISO_BROADCAST_CODE_SIZE
Broadcast code size (16 octets).
Definition iso.h:144
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:39
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
Bluetooth ISO handling.
Buffer management.
state
Definition parser_state.h:29
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Bluetooth LE Device Address.
Definition addr.h:49
Codec capability structure.
Definition audio.h:160
Codec specific configuration structure.
Definition audio.h:227
Structure storing values of fields of ASE Control Point notification.
Definition bap.h:571
enum bt_bap_ascs_reason reason
Response reason.
Definition bap.h:608
enum bt_audio_metadata_type metadata_type
Response metadata type.
Definition bap.h:618
enum bt_bap_ascs_rsp_code code
Value of the Response Code field.
Definition bap.h:585
Codec ID structure for a Broadcast Audio Source Endpoint (BASE).
Definition bap.h:2029
uint16_t cid
Codec Company ID.
Definition bap.h:2033
uint16_t vid
Codec Company Vendor ID.
Definition bap.h:2035
uint8_t id
Codec ID.
Definition bap.h:2031
BIS structure for each BIS in a Broadcast Audio Source Endpoint (BASE) subgroup.
Definition bap.h:2039
uint8_t * data
Codec Specific Data.
Definition bap.h:2045
uint8_t data_len
Codec Specific Data length.
Definition bap.h:2043
uint8_t index
Unique index of the BIS.
Definition bap.h:2041
Struct to hold subgroup specific information for the receive state.
Definition bap.h:644
uint8_t metadata[CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE]
The metadata.
Definition bap.h:653
uint32_t bis_sync
BIS synced bitfield.
Definition bap.h:646
uint8_t metadata_len
Length of the metadata.
Definition bap.h:649
Parameters for adding a source to a Broadcast Audio Scan Service server.
Definition bap.h:3032
uint8_t num_subgroups
Number of subgroups.
Definition bap.h:3053
bt_addr_le_t addr
Address of the advertiser.
Definition bap.h:3034
uint8_t adv_sid
SID of the advertising set.
Definition bap.h:3037
struct bt_bap_bass_subgroup * subgroups
Pointer to array of subgroups.
Definition bap.h:3060
uint16_t pa_interval
Periodic advertising interval in milliseconds.
Definition bap.h:3050
bool pa_sync
Whether to sync to periodic advertisements.
Definition bap.h:3040
uint32_t broadcast_id
24-bit broadcast ID
Definition bap.h:3043
Struct to hold the Basic Audio Profile Broadcast Assistant callbacks.
Definition bap.h:2850
void(* discover)(struct bt_conn *conn, int err, uint8_t recv_state_count)
Callback function for bt_bap_broadcast_assistant_discover.
Definition bap.h:2860
void(* broadcast_code)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_set_broadcast_code().
Definition bap.h:2933
void(* recv_state)(struct bt_conn *conn, int err, const struct bt_bap_scan_delegator_recv_state *state)
Callback function for when a receive state is read or updated.
Definition bap.h:2884
void(* scan_stop)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_stop().
Definition bap.h:2909
void(* mod_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_mod_src().
Definition bap.h:2925
void(* scan)(const struct bt_le_scan_recv_info *info, uint32_t broadcast_id)
Callback function for Broadcast Audio Scan Service client scan results.
Definition bap.h:2872
void(* scan_start)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_start().
Definition bap.h:2901
void(* add_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_add_src().
Definition bap.h:2917
void(* rem_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_rem_src().
Definition bap.h:2941
void(* recv_state_removed)(struct bt_conn *conn, uint8_t src_id)
Callback function for when a receive state is removed.
Definition bap.h:2893
Parameters for modifying a source.
Definition bap.h:3080
struct bt_bap_bass_subgroup * subgroups
Pointer to array of subgroups.
Definition bap.h:3098
uint8_t num_subgroups
Number of subgroups.
Definition bap.h:3095
uint8_t src_id
Source ID of the receive state.
Definition bap.h:3082
bool pa_sync
Whether to sync to periodic advertisements.
Definition bap.h:3085
uint16_t pa_interval
Periodic advertising interval.
Definition bap.h:3092
Broadcast Audio Sink callback structure.
Definition bap.h:2518
void(* base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base, size_t base_size)
Broadcast Audio Source Endpoint (BASE) received.
Definition bap.h:2529
void(* stopped)(struct bt_bap_broadcast_sink *sink, uint8_t reason)
The Broadcast Sink has stopped and none of the streams will receive audio data.
Definition bap.h:2560
void(* syncable)(struct bt_bap_broadcast_sink *sink, const struct bt_iso_biginfo *biginfo)
Broadcast sink is syncable.
Definition bap.h:2544
void(* started)(struct bt_bap_broadcast_sink *sink)
The Broadcast Sink has started and audio data may be received from all of the streams.
Definition bap.h:2552
Struct to hold the Broadcast Source callbacks.
Definition bap.h:2232
void(* started)(struct bt_bap_broadcast_source *source)
The Broadcast Source has started and all of the streams are ready for audio data.
Definition bap.h:2238
void(* stopped)(struct bt_bap_broadcast_source *source, uint8_t reason)
The Broadcast Source has stopped and none of the streams are ready for audio data.
Definition bap.h:2246
Broadcast Source create parameters.
Definition bap.h:2307
uint16_t iso_interval
ISO interval.
Definition bap.h:2367
uint8_t packing
Broadcast Source packing mode.
Definition bap.h:2324
uint8_t broadcast_code[0x10]
Broadcast code.
Definition bap.h:2339
uint8_t pto
Pre-transmission offset.
Definition bap.h:2358
size_t params_count
The number of parameters in subgroup_params.
Definition bap.h:2309
struct bt_bap_broadcast_source_subgroup_param * params
Array of stream parameters.
Definition bap.h:2312
bool encryption
Whether or not to encrypt the streams.
Definition bap.h:2327
uint8_t irc
Immediate Repetition Count.
Definition bap.h:2349
struct bt_bap_qos_cfg * qos
Quality of Service configuration.
Definition bap.h:2315
Broadcast Source stream parameters.
Definition bap.h:2277
uint8_t * data
BIS Codec Specific Configuration.
Definition bap.h:2290
struct bt_bap_stream * stream
Audio stream.
Definition bap.h:2279
size_t data_len
The number of elements in the data array.
Definition bap.h:2287
Broadcast Source subgroup parameters.
Definition bap.h:2295
struct bt_audio_codec_cfg * codec_cfg
Subgroup Codec configuration.
Definition bap.h:2303
size_t params_count
The number of parameters in stream_params.
Definition bap.h:2297
struct bt_bap_broadcast_source_stream_param * params
Array of stream parameters.
Definition bap.h:2300
Structure holding information of audio stream endpoint.
Definition bap.h:846
uint8_t id
The ID of the endpoint.
Definition bap.h:848
bool can_recv
True if the stream associated with the endpoint is able to receive data.
Definition bap.h:863
struct bt_iso_chan * iso_chan
The isochronous channel associated with the endpoint.
Definition bap.h:857
enum bt_bap_ep_state state
The state of the endpoint.
Definition bap.h:851
struct bt_bap_ep * paired_ep
Pointer to paired endpoint if the endpoint is part of a bidirectional CIS, otherwise NULL.
Definition bap.h:868
enum bt_audio_dir dir
Capabilities type.
Definition bap.h:854
bool can_send
True if the stream associated with the endpoint is able to send data.
Definition bap.h:860
const struct bt_bap_qos_cfg_pref * qos_pref
Pointer to the preferred QoS settings associated with the endpoint.
Definition bap.h:871
Audio Stream Quality of Service Preference structure.
Definition bap.h:353
uint32_t pref_pd_min
Preferred minimum Presentation Delay in microseconds.
Definition bap.h:408
uint8_t rtn
Preferred Retransmission Number.
Definition bap.h:375
bool unframed_supported
Unframed PDUs supported.
Definition bap.h:360
uint32_t pd_min
Minimum Presentation Delay in microseconds.
Definition bap.h:391
uint32_t pd_max
Maximum Presentation Delay in microseconds.
Definition bap.h:400
uint8_t phy
Preferred PHY bitfield.
Definition bap.h:368
uint32_t pref_pd_max
Preferred maximum Presentation Delay in microseconds.
Definition bap.h:417
uint16_t latency
Preferred Transport Latency.
Definition bap.h:382
QoS configuration structure.
Definition bap.h:235
uint16_t sdu
Maximum SDU size.
Definition bap.h:280
uint8_t burst_number
Burst number.
Definition bap.h:318
enum bt_bap_qos_cfg_framing framing
QoS Framing.
Definition bap.h:257
uint16_t latency
Maximum Transport Latency.
Definition bap.h:289
uint8_t num_subevents
Number of subevents.
Definition bap.h:327
uint8_t rtn
Retransmission Number.
Definition bap.h:273
uint32_t interval
SDU Interval.
Definition bap.h:297
uint8_t phy
PHY.
Definition bap.h:265
uint16_t max_pdu
Maximum PDU size.
Definition bap.h:311
uint32_t pd
Presentation Delay in microseconds.
Definition bap.h:246
Parameters for bt_bap_scan_delegator_add_src().
Definition bap.h:2705
enum bt_bap_pa_state pa_state
Periodic Advertising sync state.
Definition bap.h:2718
uint8_t num_subgroups
Number of subgroups.
Definition bap.h:2727
struct bt_bap_bass_subgroup subgroups[Z_COND_CODE_1(CONFIG_BT_AUDIO,(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS),(0))]
Subgroup specific information.
Definition bap.h:2730
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition bap.h:2721
bt_addr_le_t addr
Periodic Advertiser Address.
Definition bap.h:2707
uint8_t sid
Advertiser SID.
Definition bap.h:2710
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition bap.h:2724
Struct to hold the Basic Audio Profile Scan Delegator callbacks.
Definition bap.h:700
int(* pa_sync_req)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, bool past_avail, uint16_t pa_interval)
Periodic advertising sync request.
Definition bap.h:729
int(* add_source)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Add Source operation callback.
Definition bap.h:810
int(* pa_sync_term_req)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Periodic advertising sync termination request.
Definition bap.h:746
void(* recv_state_updated)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Receive state updated.
Definition bap.h:710
int(* remove_source)(struct bt_conn *conn, uint8_t src_id)
Remove Source operation callback.
Definition bap.h:842
void(* broadcast_code)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, const uint8_t broadcast_code[0x10])
Broadcast code received.
Definition bap.h:760
int(* bis_sync_req)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, const uint32_t bis_sync_req[Z_COND_CODE_1(CONFIG_BT_AUDIO,(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS),(0))])
Broadcast Isochronous Stream synchronize request.
Definition bap.h:784
void(* scanning_state)(struct bt_conn *conn, bool is_scanning)
Broadcast Assistant scanning state callback.
Definition bap.h:796
int(* modify_source)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Modify Source operation callback.
Definition bap.h:826
Parameters for bt_bap_scan_delegator_mod_src().
Definition bap.h:2749
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition bap.h:2757
struct bt_bap_bass_subgroup subgroups[Z_COND_CODE_1(CONFIG_BT_AUDIO,(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS),(0))]
Subgroup specific information.
Definition bap.h:2768
uint8_t num_subgroups
Number of subgroups.
Definition bap.h:2760
uint8_t src_id
The periodic adverting sync.
Definition bap.h:2751
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition bap.h:2754
Represents the Broadcast Audio Scan Service receive state.
Definition bap.h:658
uint8_t src_id
The source ID.
Definition bap.h:660
enum bt_bap_pa_state pa_sync_state
The periodic adverting sync state.
Definition bap.h:669
bt_addr_le_t addr
The Bluetooth address.
Definition bap.h:663
struct bt_bap_bass_subgroup subgroups[Z_COND_CODE_1(CONFIG_BT_AUDIO,(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS),(0))]
Subgroup specific information.
Definition bap.h:692
uint8_t adv_sid
The advertising set ID.
Definition bap.h:666
uint8_t num_subgroups
Number of subgroups.
Definition bap.h:685
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition bap.h:675
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition bap.h:672
uint8_t bad_code[0x10]
The bad broadcast code.
Definition bap.h:682
Stream operation.
Definition bap.h:950
void(* recv)(struct bt_bap_stream *stream, const struct bt_iso_recv_info *info, struct net_buf *buf)
Stream audio HCI receive callback.
Definition bap.h:1043
void(* enabled)(struct bt_bap_stream *stream)
Stream enabled callback.
Definition bap.h:979
void(* sent)(struct bt_bap_stream *stream)
Stream audio HCI sent callback.
Definition bap.h:1060
void(* released)(struct bt_bap_stream *stream)
Stream released callback.
Definition bap.h:1008
void(* disabled)(struct bt_bap_stream *stream)
Stream disabled callback.
Definition bap.h:998
void(* configured)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg_pref *pref)
Stream configured callback.
Definition bap.h:960
void(* connected)(struct bt_bap_stream *stream)
Isochronous channel connected callback.
Definition bap.h:1075
void(* metadata_updated)(struct bt_bap_stream *stream)
Stream metadata updated callback.
Definition bap.h:989
void(* started)(struct bt_bap_stream *stream)
Stream started callback.
Definition bap.h:1019
void(* disconnected)(struct bt_bap_stream *stream, uint8_t reason)
Isochronous channel disconnected callback.
Definition bap.h:1089
void(* stopped)(struct bt_bap_stream *stream, uint8_t reason)
Stream stopped callback.
Definition bap.h:1029
void(* qos_set)(struct bt_bap_stream *stream)
Stream QoS set callback.
Definition bap.h:970
Basic Audio Profile stream structure.
Definition bap.h:909
void * group
Unicast or Broadcast group - Used internally.
Definition bap.h:936
struct bt_audio_codec_cfg * codec_cfg
Codec Configuration.
Definition bap.h:917
struct bt_bap_qos_cfg * qos
QoS Configuration.
Definition bap.h:920
struct bt_bap_stream_ops * ops
Audio stream operations.
Definition bap.h:923
struct bt_iso_chan * iso
ISO channel reference.
Definition bap.h:933
struct bt_conn * conn
Connection reference.
Definition bap.h:911
struct bt_bap_ep * ep
Endpoint reference.
Definition bap.h:914
void * user_data
Stream user data.
Definition bap.h:926
Unicast Client callback structure.
Definition bap.h:1794
void(* enable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_enable().
Definition bap.h:1861
void(* discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir)
BAP discovery callback function.
Definition bap.h:1975
void(* qos)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_qos().
Definition bap.h:1848
void(* pac_record)(struct bt_conn *conn, enum bt_audio_dir dir, const struct bt_audio_codec_cap *codec_cap)
Remote Published Audio Capability (PAC) record discovered.
Definition bap.h:1947
void(* disable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_disable().
Definition bap.h:1904
void(* start)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_start().
Definition bap.h:1876
void(* location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc)
Remote Unicast Server Audio Locations.
Definition bap.h:1807
void(* metadata)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_metadata().
Definition bap.h:1917
void(* release)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_release().
Definition bap.h:1930
void(* stop)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_stop().
Definition bap.h:1891
void(* available_contexts)(struct bt_conn *conn, enum bt_audio_context snk_ctx, enum bt_audio_context src_ctx)
Remote Unicast Server Available Contexts.
Definition bap.h:1821
void(* endpoint)(struct bt_conn *conn, enum bt_audio_dir dir, struct bt_bap_ep *ep)
Remote Audio Stream Endpoint (ASE) discovered.
Definition bap.h:1961
void(* config)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code, enum bt_bap_ascs_reason reason)
Callback function for bt_bap_stream_config() and bt_bap_stream_reconfig().
Definition bap.h:1833
Structure holding information of audio stream endpoint.
Definition bap.h:1767
uint32_t source_pd
Presentation delay for source ASEs.
Definition bap.h:1778
uint32_t sink_pd
Presentation delay for sink ASEs.
Definition bap.h:1772
Parameters for the creating unicast groups with bt_bap_unicast_group_create().
Definition bap.h:1623
uint16_t iso_interval
ISO interval.
Definition bap.h:1667
uint8_t packing
Unicast Group packing mode.
Definition bap.h:1637
uint8_t p_to_c_ft
Peripheral to Central flush timeout.
Definition bap.h:1658
uint8_t c_to_p_ft
Central to Peripheral flush timeout.
Definition bap.h:1648
size_t params_count
The number of parameters in params.
Definition bap.h:1625
struct bt_bap_unicast_group_stream_pair_param * params
Array of stream parameters.
Definition bap.h:1628
Parameter struct for the unicast group functions.
Definition bap.h:1614
struct bt_bap_unicast_group_stream_param * rx_param
Pointer to a receiving stream parameters.
Definition bap.h:1616
struct bt_bap_unicast_group_stream_param * tx_param
Pointer to a transmitting stream parameters.
Definition bap.h:1619
Parameter struct for each stream in the unicast group.
Definition bap.h:1600
struct bt_bap_qos_cfg * qos
The QoS settings for the stream object.
Definition bap.h:1605
struct bt_bap_stream * stream
Pointer to a stream object.
Definition bap.h:1602
Unicast Server callback structure.
Definition bap.h:1357
int(* disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Disable request callback.
Definition bap.h:1472
int(* qos)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg *qos, struct bt_bap_ascs_rsp *rsp)
Stream QoS request callback.
Definition bap.h:1413
int(* start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Start request callback.
Definition bap.h:1443
int(* metadata)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len, struct bt_bap_ascs_rsp *rsp)
Stream Metadata update request callback.
Definition bap.h:1458
int(* enable)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len, struct bt_bap_ascs_rsp *rsp)
Stream Enable request callback.
Definition bap.h:1429
int(* reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir, const struct bt_audio_codec_cfg *codec_cfg, struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Stream reconfig request callback.
Definition bap.h:1396
int(* stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Stop callback.
Definition bap.h:1485
int(* release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream release callback.
Definition bap.h:1499
int(* config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir, const struct bt_audio_codec_cfg *codec_cfg, struct bt_bap_stream **stream, struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Endpoint config request callback.
Definition bap.h:1376
Structure for registering Unicast Server.
Definition bap.h:1093
uint8_t snk_cnt
Sink Count to register.
Definition bap.h:1099
uint8_t src_cnt
Source Count to register.
Definition bap.h:1105
Bluetooth data.
Definition bluetooth.h:538
Broadcast Isochronous Group (BIG) information.
Definition iso.h:658
ISO Channel structure.
Definition iso.h:207
ISO Meta Data structure for received ISO packets.
Definition iso.h:367
ISO Meta Data structure for transmitted ISO packets.
Definition iso.h:383
LE advertisement and scan response packet information.
Definition bluetooth.h:2409
Group structure.
Definition grp.h:18
Simple network buffer representation.
Definition net_buf.h:89
Network buffer representation.
Definition net_buf.h:1006
Macro utilities.