Zephyr Project API  3.4.0
A Scalable Open Source RTOS
bap.h
Go to the documentation of this file.
1
10#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_
11#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_
12
22
23#if defined(CONFIG_BT_BAP_SCAN_DELEGATOR)
24#define BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN CONFIG_BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN
25#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS CONFIG_BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS
26#else
27#define BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN 0
28#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS 0
29#endif
30
42#define BT_BAP_BASE_MIN_SIZE 16
43
45#define BT_BAP_BASE_BIS_DATA_MIN_SIZE 2 /* index and length */
46
51
54
57
60
63};
64
69
72
75
78};
79
84
87};
88
90#define BT_BAP_PA_INTERVAL_UNKNOWN 0xFFFF
91
97#define BT_BAP_BIS_SYNC_NO_PREF 0xFFFFFFFF
98
99#if defined(CONFIG_BT_BAP_BROADCAST_SINK)
100/* TODO: Since these are also used for the broadcast assistant,
101 * they should not be tied to the broadcast sink
102 */
103#define BROADCAST_SNK_STREAM_CNT CONFIG_BT_BAP_BROADCAST_SNK_STREAM_COUNT
104#define BROADCAST_SNK_SUBGROUP_CNT CONFIG_BT_BAP_BROADCAST_SNK_SUBGROUP_COUNT
105#else /* !CONFIG_BT_BAP_BROADCAST_SINK */
106#define BROADCAST_SNK_STREAM_CNT 0
107#define BROADCAST_SNK_SUBGROUP_CNT 0
108#endif /* CONFIG_BT_BAP_BROADCAST_SINK*/
109
114
117
120
123
126
129
132};
133
171};
172
203};
204
209
215 union {
238
249 };
250};
251
259#define BT_BAP_ASCS_RSP(c, r) (struct bt_bap_ascs_rsp) { .code = c, .reason = r }
260
262struct bt_bap_broadcast_source;
263
265struct bt_bap_broadcast_sink;
266
268struct bt_bap_unicast_group;
269
271struct bt_bap_ep;
272
273/* TODO: Replace with struct bt_bap_base_subgroup */
278
281
284};
285
290
293
296
299
302
305
311
314
317};
318
329 void (*recv_state_updated)(struct bt_conn *conn,
330 const struct bt_bap_scan_delegator_recv_state *recv_state);
331
353 int (*pa_sync_req)(struct bt_conn *conn,
354 const struct bt_bap_scan_delegator_recv_state *recv_state,
355 bool past_avail, uint16_t pa_interval);
356
370 int (*pa_sync_term_req)(struct bt_conn *conn,
371 const struct bt_bap_scan_delegator_recv_state *recv_state);
372
384 void (*broadcast_code)(struct bt_conn *conn,
385 const struct bt_bap_scan_delegator_recv_state *recv_state,
387
407 int (*bis_sync_req)(struct bt_conn *conn,
408 const struct bt_bap_scan_delegator_recv_state *recv_state,
410};
411
416
419
422
426 struct bt_bap_ep *paired_ep;
427};
428
437int bt_bap_ep_get_info(const struct bt_bap_ep *ep, struct bt_bap_ep_info *info);
438
450
452 struct bt_conn *conn;
453
455 struct bt_bap_ep *ep;
456
459
462
465
466#if defined(CONFIG_BT_BAP_UNICAST_CLIENT)
472 struct bt_bap_iso *bap_iso;
473#endif /* CONFIG_BT_BAP_UNICAST_CLIENT */
474
476 void *group;
477
480
481 /* Internally used list node */
482 sys_snode_t _node;
483};
484
487#if defined(CONFIG_BT_BAP_UNICAST)
496 void (*configured)(struct bt_bap_stream *stream, const struct bt_codec_qos_pref *pref);
497
506 void (*qos_set)(struct bt_bap_stream *stream);
507
515 void (*enabled)(struct bt_bap_stream *stream);
516
525 void (*metadata_updated)(struct bt_bap_stream *stream);
526
534 void (*disabled)(struct bt_bap_stream *stream);
535
544 void (*released)(struct bt_bap_stream *stream);
545#endif /* CONFIG_BT_BAP_UNICAST */
546
555 void (*started)(struct bt_bap_stream *stream);
556
565 void (*stopped)(struct bt_bap_stream *stream, uint8_t reason);
566
567#if defined(CONFIG_BT_AUDIO_RX)
579 void (*recv)(struct bt_bap_stream *stream, const struct bt_iso_recv_info *info,
580 struct net_buf *buf);
581#endif /* CONFIG_BT_AUDIO_RX */
582
583#if defined(CONFIG_BT_AUDIO_TX)
594 void (*sent)(struct bt_bap_stream *stream);
595#endif /* CONFIG_BT_AUDIO_TX */
596};
597
607
621int bt_bap_stream_config(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_bap_ep *ep,
622 struct bt_codec *codec);
623
638
651int bt_bap_stream_qos(struct bt_conn *conn, struct bt_bap_unicast_group *group);
652
667int bt_bap_stream_enable(struct bt_bap_stream *stream, struct bt_codec_data *meta,
668 size_t meta_count);
669
681int bt_bap_stream_metadata(struct bt_bap_stream *stream, struct bt_codec_data *meta,
682 size_t meta_count);
683
697
723
738
753
773int bt_bap_stream_send(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num,
774 uint32_t ts);
775
802 int (*config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir,
803 const struct bt_codec *codec, struct bt_bap_stream **stream,
804 struct bt_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp);
805
822 int (*reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir,
823 const struct bt_codec *codec, struct bt_codec_qos_pref *const pref,
824 struct bt_bap_ascs_rsp *rsp);
825
839 int (*qos)(struct bt_bap_stream *stream, const struct bt_codec_qos *qos,
840 struct bt_bap_ascs_rsp *rsp);
841
855 int (*enable)(struct bt_bap_stream *stream, const struct bt_codec_data *meta,
856 size_t meta_count, struct bt_bap_ascs_rsp *rsp);
857
869 int (*start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
870
884 int (*metadata)(struct bt_bap_stream *stream, const struct bt_codec_data *meta,
885 size_t meta_count, struct bt_bap_ascs_rsp *rsp);
886
898 int (*disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
899
911 int (*stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
912
925 int (*release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
926};
927
939
951
959typedef void (*bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data);
960
968void bt_bap_unicast_server_foreach_ep(struct bt_conn *conn, bt_bap_ep_func_t func, void *user_data);
969
980int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream,
981 struct bt_codec *codec,
982 const struct bt_codec_qos_pref *qos_pref);
983 /* End of group bt_bap_unicast_server */
985
996
999};
1000
1009
1012};
1013
1017
1020
1028};
1029
1042 struct bt_bap_unicast_group **unicast_group);
1043
1063int bt_bap_unicast_group_add_streams(struct bt_bap_unicast_group *unicast_group,
1065 size_t num_param);
1066
1077int bt_bap_unicast_group_delete(struct bt_bap_unicast_group *unicast_group);
1078
1093 void (*location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc);
1094
1107 void (*available_contexts)(struct bt_conn *conn, enum bt_audio_context snk_ctx,
1108 enum bt_audio_context src_ctx);
1109
1119 void (*config)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1120 enum bt_bap_ascs_reason reason);
1121
1134 void (*qos)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1135 enum bt_bap_ascs_reason reason);
1136
1147 void (*enable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1148 enum bt_bap_ascs_reason reason);
1149
1162 void (*start)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1163 enum bt_bap_ascs_reason reason);
1164
1177 void (*stop)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1178 enum bt_bap_ascs_reason reason);
1179
1190 void (*disable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1191 enum bt_bap_ascs_reason reason);
1192
1203 void (*metadata)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1204 enum bt_bap_ascs_reason reason);
1205
1216 void (*release)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1217 enum bt_bap_ascs_reason reason);
1218
1233 void (*pac_record)(struct bt_conn *conn, enum bt_audio_dir dir,
1234 const struct bt_codec *codec);
1235
1247 void (*endpoint)(struct bt_conn *conn, enum bt_audio_dir dir, struct bt_bap_ep *ep);
1248
1261 void (*discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir);
1262};
1263
1275
1285int bt_bap_unicast_client_discover(struct bt_conn *conn, enum bt_audio_dir dir);
1286 /* End of group bt_bap_unicast_client */
1296 /* Unique index of the BIS */
1298#if defined(CONFIG_BT_CODEC_MAX_DATA_COUNT)
1303 size_t data_count;
1308 struct bt_codec_data data[CONFIG_BT_CODEC_MAX_DATA_COUNT];
1309#endif /* CONFIG_BT_CODEC_MAX_DATA_COUNT */
1310};
1311
1313 /* Number of BIS in the subgroup */
1321 /* Array of BIS specific data for each BIS in the subgroup */
1323};
1324
1331
1332 /* Number of subgroups in the BASE */
1334
1335 /* Array of subgroups in the BASE */
1337};
1338
1349int bt_bap_decode_base(struct bt_data *data, struct bt_bap_base *base);
1350 /* End of group bt_bap_broadcast */
1352
1364
1365#if CONFIG_BT_CODEC_MAX_DATA_COUNT > 0
1371 size_t data_count;
1372
1374 struct bt_codec_data *data;
1375#endif /* CONFIG_BT_CODEC_MAX_DATA_COUNT > 0 */
1376};
1377
1382
1385
1388};
1389
1394
1397
1400
1409
1412
1424};
1425
1443 struct bt_bap_broadcast_source **source);
1444
1457int bt_bap_broadcast_source_reconfig(struct bt_bap_broadcast_source *source, struct bt_codec *codec,
1458 struct bt_codec_qos *qos);
1459
1472int bt_bap_broadcast_source_update_metadata(struct bt_bap_broadcast_source *source,
1473 const struct bt_codec_data meta[], size_t meta_count);
1474
1486int bt_bap_broadcast_source_start(struct bt_bap_broadcast_source *source,
1487 struct bt_le_ext_adv *adv);
1488
1499int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source);
1500
1511int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source);
1512
1526int bt_bap_broadcast_source_get_id(const struct bt_bap_broadcast_source *source,
1527 uint32_t *const broadcast_id);
1528
1543int bt_bap_broadcast_source_get_base(struct bt_bap_broadcast_source *source,
1544 struct net_buf_simple *base_buf);
1545 /* End of bt_bap_broadcast_source */
1547
1568 bool (*scan_recv)(const struct bt_le_scan_recv_info *info, struct net_buf_simple *ad,
1569 uint32_t broadcast_id);
1570
1580 void (*pa_synced)(struct bt_bap_broadcast_sink *sink, struct bt_le_per_adv_sync *sync,
1581 uint32_t broadcast_id);
1582
1591 void (*base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base);
1592
1604 void (*syncable)(struct bt_bap_broadcast_sink *sink, bool encrypted);
1605
1618 void (*scan_term)(int err);
1619
1628 void (*pa_sync_lost)(struct bt_bap_broadcast_sink *sink);
1629
1630 /* Internally used list node */
1631 sys_snode_t _node;
1632};
1633
1639
1653
1662
1680int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t broadcast_id);
1681
1700int bt_bap_broadcast_sink_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield,
1701 struct bt_bap_stream *streams[], const uint8_t broadcast_code[16]);
1702
1712int bt_bap_broadcast_sink_stop(struct bt_bap_broadcast_sink *sink);
1713
1724int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink);
1725 /* End of group bt_bap_broadcast_sink */
1727
1734
1749 enum bt_bap_pa_state pa_state);
1750
1760 uint8_t src_id,
1762
1765 struct bt_le_per_adv_sync *pa_sync;
1766
1769
1772
1775
1778};
1779
1794
1798
1801
1804
1807
1815};
1816
1831
1846
1850};
1851
1861 const struct bt_bap_scan_delegator_recv_state *recv_state, void *user_data);
1862
1869 void *user_data);
1870
1880
1881/******************************** CLIENT API ********************************/
1882
1889typedef void (*bt_bap_broadcast_assistant_write_cb)(struct bt_conn *conn,
1890 int err);
1891
1902 void (*discover)(struct bt_conn *conn, int err,
1903 uint8_t recv_state_count);
1904
1914 void (*scan)(const struct bt_le_scan_recv_info *info,
1915 uint32_t broadcast_id);
1916
1926 void (*recv_state)(struct bt_conn *conn, int err,
1928
1936 void (*recv_state_removed)(struct bt_conn *conn, int err,
1937 uint8_t src_id);
1938
1945 void (*scan_start)(struct bt_conn *conn, int err);
1946
1953 void (*scan_stop)(struct bt_conn *conn, int err);
1954
1961 void (*add_src)(struct bt_conn *conn, int err);
1962
1969 void (*mod_src)(struct bt_conn *conn, int err);
1970
1977 void (*broadcast_code)(struct bt_conn *conn, int err);
1978
1985 void (*rem_src)(struct bt_conn *conn, int err);
1986};
1987
1997int bt_bap_broadcast_assistant_discover(struct bt_conn *conn);
1998
2017 bool start_scan);
2018
2026
2031
2036
2039
2042
2045
2052
2055
2058};
2059
2069 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_add_src_param *param);
2070
2075
2078
2085
2088
2091};
2092
2101 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_mod_src_param *param);
2102
2112 struct bt_conn *conn, uint8_t src_id,
2113 const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]);
2114
2122int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id);
2123
2133 uint8_t idx);
2134 /* end of bt_bap */
2136
2137#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BAP_ */
Bluetooth Audio handling.
Bluetooth connection handling.
static ssize_t recv(int sock, void *buf, size_t max_len, int flags)
Definition: socket.h:744
bt_audio_dir
Audio Capability type.
Definition: audio.h:321
bt_audio_location
Location values for BT Audio.
Definition: audio.h:228
#define BT_AUDIO_BROADCAST_CODE_SIZE
Definition: audio.h:42
bt_audio_metadata_type
Codec metadata type IDs.
Definition: audio.h:116
bt_audio_context
Audio Context Type for Generic Audio.
Definition: audio.h:48
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_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield, struct bt_bap_stream *streams[], const uint8_t broadcast_code[16])
Sync to a broadcaster's audio.
int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink)
Release a broadcast sink.
int bt_bap_broadcast_sink_scan_start(const struct bt_le_scan_param *param)
Start scan for broadcast sources.
int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t broadcast_id)
Create a Broadcast Sink from a periodic advertising sync.
int bt_bap_broadcast_sink_scan_stop(void)
Stop scan for broadcast sources.
int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source)
Delete audio broadcast source.
int bt_bap_broadcast_source_create(struct bt_bap_broadcast_source_create_param *param, struct bt_bap_broadcast_source **source)
Create audio broadcast source.
int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source)
Stop audio broadcast source.
int bt_bap_broadcast_source_reconfig(struct bt_bap_broadcast_source *source, struct bt_codec *codec, struct bt_codec_qos *qos)
Reconfigure audio broadcast source.
int bt_bap_broadcast_source_update_metadata(struct bt_bap_broadcast_source *source, const struct bt_codec_data meta[], size_t meta_count)
Modify the metadata of an 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_get_id(const struct bt_bap_broadcast_source *source, uint32_t *const broadcast_id)
Get the broadcast ID of a 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_decode_base(struct bt_data *data, struct bt_bap_base *base)
Decode a Broadcast Audio Source Endpoint (BASE) from advertising data.
int bt_bap_unicast_group_delete(struct bt_bap_unicast_group *unicast_group)
Delete audio 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 audio 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_client_register_cb(const struct bt_bap_unicast_client_cb *cb)
Register unicast client callbacks.
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_register_cb(const struct bt_bap_unicast_server_cb *cb)
Register unicast server callbacks.
int bt_bap_unicast_server_unregister_cb(const struct bt_bap_unicast_server_cb *cb)
Unregister unicast server callbacks.
int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_codec *codec, const struct bt_codec_qos_pref *qos_pref)
Initialize and configure a new ASE.
void(* bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data)
The callback function called for each endpoint.
Definition: bap.h:959
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_disable(struct bt_bap_stream *stream)
Disable Audio Stream.
bt_bap_bass_att_err
Definition: bap.h:81
#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS
Definition: bap.h:28
#define BROADCAST_SNK_SUBGROUP_CNT
Definition: bap.h:107
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.
void(* bt_bap_broadcast_assistant_write_cb)(struct bt_conn *conn, int err)
Callback function for writes.
Definition: bap.h:1889
int bt_bap_stream_metadata(struct bt_bap_stream *stream, struct bt_codec_data *meta, size_t meta_count)
Change Audio Stream Metadata.
int bt_bap_stream_reconfig(struct bt_bap_stream *stream, struct bt_codec *codec)
Reconfigure Audio Stream.
void bt_bap_scan_delegator_register_cb(struct bt_bap_scan_delegator_cb *cb)
Register the callbacks for the Basic Audio Profile Scan Delegator.
bt_bap_big_enc_state
Definition: bap.h:66
#define BROADCAST_SNK_STREAM_CNT
Definition: bap.h:106
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_broadcast_assistant_scan_stop(struct bt_conn *conn)
Stop remote scanning for BISes for a server.
int bt_bap_stream_config(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_bap_ep *ep, struct bt_codec *codec)
Configure Audio Stream.
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.
#define BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN
Definition: bap.h:27
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:180
int bt_bap_stream_send(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num, uint32_t ts)
Send data to Audio stream.
bt_bap_ascs_rsp_code
Response Status Code.
Definition: bap.h:140
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.
enum bt_bap_scan_delegator_iter(* bt_bap_scan_delegator_state_func_t)(const struct bt_bap_scan_delegator_recv_state *recv_state, void *user_data)
Definition: bap.h:1860
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.
bt_bap_scan_delegator_iter
Definition: bap.h:1847
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.
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_scan_delegator_mod_src(const struct bt_bap_scan_delegator_mod_src_param *param)
Add a receive state source locally.
bt_bap_pa_state
Definition: bap.h:48
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_enable(struct bt_bap_stream *stream, struct bt_codec_data *meta, size_t meta_count)
Enable Audio Stream.
int bt_bap_broadcast_assistant_set_broadcast_code(struct bt_conn *conn, uint8_t src_id, const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE])
Set a broadcast code to the specified receive state.
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
Definition: bap.h:111
int bt_bap_scan_delegator_set_bis_sync_state(uint8_t src_id, uint32_t bis_synced[0])
Set the sync state of a receive state in the server.
void bt_bap_broadcast_assistant_register_cb(struct bt_bap_broadcast_assistant_cb *cb)
Registers the callbacks used by Broadcast Audio Scan Service client.
@ BT_BAP_BASS_ERR_OPCODE_NOT_SUPPORTED
Definition: bap.h:83
@ BT_BAP_BASS_ERR_INVALID_SRC_ID
Definition: bap.h:86
@ BT_BAP_BIG_ENC_STATE_BCODE_REQ
Definition: bap.h:71
@ BT_BAP_BIG_ENC_STATE_NO_ENC
Definition: bap.h:68
@ BT_BAP_BIG_ENC_STATE_BAD_CODE
Definition: bap.h:77
@ BT_BAP_BIG_ENC_STATE_DEC
Definition: bap.h:74
@ BT_BAP_ASCS_REASON_NONE
Definition: bap.h:182
@ BT_BAP_ASCS_REASON_PD
Definition: bap.h:200
@ BT_BAP_ASCS_REASON_FRAMING
Definition: bap.h:190
@ BT_BAP_ASCS_REASON_CODEC_DATA
Definition: bap.h:186
@ BT_BAP_ASCS_REASON_SDU
Definition: bap.h:194
@ BT_BAP_ASCS_REASON_CODEC
Definition: bap.h:184
@ BT_BAP_ASCS_REASON_PHY
Definition: bap.h:192
@ BT_BAP_ASCS_REASON_LATENCY
Definition: bap.h:198
@ BT_BAP_ASCS_REASON_CIS
Definition: bap.h:202
@ BT_BAP_ASCS_REASON_RTN
Definition: bap.h:196
@ BT_BAP_ASCS_REASON_INTERVAL
Definition: bap.h:188
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE_STATE
Definition: bap.h:150
@ BT_BAP_ASCS_RSP_CODE_METADATA_INVALID
Definition: bap.h:166
@ BT_BAP_ASCS_RSP_CODE_NOT_SUPPORTED
Definition: bap.h:144
@ BT_BAP_ASCS_RSP_CODE_CONF_UNSUPPORTED
Definition: bap.h:156
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE
Definition: bap.h:148
@ BT_BAP_ASCS_RSP_CODE_INVALID_DIR
Definition: bap.h:152
@ BT_BAP_ASCS_RSP_CODE_CONF_INVALID
Definition: bap.h:160
@ BT_BAP_ASCS_RSP_CODE_CAP_UNSUPPORTED
Definition: bap.h:154
@ BT_BAP_ASCS_RSP_CODE_NO_MEM
Definition: bap.h:168
@ BT_BAP_ASCS_RSP_CODE_METADATA_REJECTED
Definition: bap.h:164
@ BT_BAP_ASCS_RSP_CODE_UNSPECIFIED
Definition: bap.h:170
@ BT_BAP_ASCS_RSP_CODE_INVALID_LENGTH
Definition: bap.h:146
@ BT_BAP_ASCS_RSP_CODE_METADATA_UNSUPPORTED
Definition: bap.h:162
@ BT_BAP_ASCS_RSP_CODE_SUCCESS
Definition: bap.h:142
@ BT_BAP_ASCS_RSP_CODE_CONF_REJECTED
Definition: bap.h:158
@ BT_BAP_SCAN_DELEGATOR_ITER_CONTINUE
Definition: bap.h:1849
@ BT_BAP_SCAN_DELEGATOR_ITER_STOP
Definition: bap.h:1848
@ BT_BAP_PA_STATE_NOT_SYNCED
Definition: bap.h:50
@ BT_BAP_PA_STATE_FAILED
Definition: bap.h:59
@ BT_BAP_PA_STATE_SYNCED
Definition: bap.h:56
@ BT_BAP_PA_STATE_INFO_REQ
Definition: bap.h:53
@ BT_BAP_PA_STATE_NO_PAST
Definition: bap.h:62
@ BT_BAP_EP_STATE_ENABLING
Definition: bap.h:122
@ BT_BAP_EP_STATE_IDLE
Definition: bap.h:113
@ BT_BAP_EP_STATE_CODEC_CONFIGURED
Definition: bap.h:116
@ BT_BAP_EP_STATE_RELEASING
Definition: bap.h:131
@ BT_BAP_EP_STATE_QOS_CONFIGURED
Definition: bap.h:119
@ BT_BAP_EP_STATE_DISABLING
Definition: bap.h:128
@ BT_BAP_EP_STATE_STREAMING
Definition: bap.h:125
state
Definition: parser_state.h:29
struct _snode sys_snode_t
Definition: slist.h:33
#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
Definition: addr.h:49
Structure storing values of fields of ASE Control Point notification.
Definition: bap.h:206
enum bt_bap_ascs_reason reason
Response reason.
Definition: bap.h:237
enum bt_audio_metadata_type metadata_type
Response metadata type.
Definition: bap.h:248
enum bt_bap_ascs_rsp_code code
Value of the Response Code field.
Definition: bap.h:208
Definition: bap.h:1295
uint8_t index
Definition: bap.h:1297
Definition: bap.h:1312
struct bt_codec codec
Definition: bap.h:1320
struct bt_bap_base_bis_data bis_data[0]
Definition: bap.h:1322
size_t bis_count
Definition: bap.h:1314
Definition: bap.h:1325
size_t subgroup_count
Definition: bap.h:1333
uint32_t pd
QoS Presentation Delay in microseconds.
Definition: bap.h:1330
struct bt_bap_base_subgroup subgroups[0]
Definition: bap.h:1336
uint8_t num_subgroups
Definition: bap.h:2054
bt_addr_le_t addr
Definition: bap.h:2035
uint8_t adv_sid
Definition: bap.h:2038
uint16_t pa_interval
Periodic advertising interval in milliseconds.
Definition: bap.h:2051
struct bt_bap_scan_delegator_subgroup * subgroups
Definition: bap.h:2057
bool pa_sync
Definition: bap.h:2041
uint32_t broadcast_id
Definition: bap.h:2044
Definition: bap.h:1892
void(* discover)(struct bt_conn *conn, int err, uint8_t recv_state_count)
Callback function for bt_bap_broadcast_assistant_discover.
Definition: bap.h:1902
void(* broadcast_code)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_broadcast_code().
Definition: bap.h:1977
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:1926
void(* scan_stop)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_stop().
Definition: bap.h:1953
void(* recv_state_removed)(struct bt_conn *conn, int err, uint8_t src_id)
Callback function for when a receive state is removed.
Definition: bap.h:1936
void(* mod_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_mod_src().
Definition: bap.h:1969
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:1914
void(* scan_start)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_start().
Definition: bap.h:1945
void(* add_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_add_src().
Definition: bap.h:1961
void(* rem_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_rem_src().
Definition: bap.h:1985
uint8_t num_subgroups
Definition: bap.h:2087
uint8_t src_id
Definition: bap.h:2074
bool pa_sync
Definition: bap.h:2077
struct bt_bap_scan_delegator_subgroup * subgroups
Definition: bap.h:2090
uint16_t pa_interval
Periodic advertising interval.
Definition: bap.h:2084
Definition: bap.h:1556
void(* pa_synced)(struct bt_bap_broadcast_sink *sink, struct bt_le_per_adv_sync *sync, uint32_t broadcast_id)
Periodic advertising sync callback.
Definition: bap.h:1580
void(* pa_sync_lost)(struct bt_bap_broadcast_sink *sink)
Periodic advertising synchronization lost callback.
Definition: bap.h:1628
void(* scan_term)(int err)
Scan terminated callback.
Definition: bap.h:1618
void(* base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base)
Broadcast Audio Source Endpoint (BASE) received.
Definition: bap.h:1591
void(* syncable)(struct bt_bap_broadcast_sink *sink, bool encrypted)
Broadcast sink is syncable.
Definition: bap.h:1604
bool(* scan_recv)(const struct bt_le_scan_recv_info *info, struct net_buf_simple *ad, uint32_t broadcast_id)
Scan receive callback.
Definition: bap.h:1568
uint8_t packing
Broadcast Source packing mode.
Definition: bap.h:1408
struct bt_codec_qos * qos
Definition: bap.h:1399
bool encryption
Definition: bap.h:1411
uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]
Broadcast code.
Definition: bap.h:1423
struct bt_bap_broadcast_source_subgroup_param * params
Definition: bap.h:1396
size_t params_count
Definition: bap.h:1393
struct bt_bap_stream * stream
Definition: bap.h:1363
struct bt_codec * codec
Definition: bap.h:1387
size_t params_count
Definition: bap.h:1381
struct bt_bap_broadcast_source_stream_param * params
Definition: bap.h:1384
Definition: bap.h:413
uint8_t id
Definition: bap.h:415
enum bt_bap_ep_state state
Definition: bap.h:418
struct bt_bap_ep * paired_ep
Definition: bap.h:426
enum bt_audio_dir dir
Definition: bap.h:421
struct bt_bap_scan_delegator_subgroup subgroups[0]
Definition: bap.h:1777
uint8_t num_subgroups
Definition: bap.h:1774
enum bt_bap_big_enc_state encrypt_state
Definition: bap.h:1768
struct bt_le_per_adv_sync * pa_sync
Definition: bap.h:1765
uint32_t broadcast_id
Definition: bap.h:1771
Definition: bap.h:319
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:353
void(* broadcast_code)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE])
Broadcast code received.
Definition: bap.h:384
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:370
void(* recv_state_updated)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Receive state updated.
Definition: bap.h:329
int(* bis_sync_req)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, const uint32_t bis_sync_req[0])
Broadcast Isochronous Stream synchronize request.
Definition: bap.h:407
uint32_t broadcast_id
Definition: bap.h:1803
struct bt_bap_scan_delegator_subgroup subgroups[0]
Subgroup specific information.
Definition: bap.h:1814
uint8_t num_subgroups
Definition: bap.h:1806
uint8_t src_id
Definition: bap.h:1797
enum bt_bap_big_enc_state encrypt_state
Definition: bap.h:1800
uint8_t bad_code[BT_AUDIO_BROADCAST_CODE_SIZE]
The bad broadcast code.
Definition: bap.h:310
uint8_t src_id
Definition: bap.h:289
enum bt_bap_pa_state pa_sync_state
Definition: bap.h:298
bt_addr_le_t addr
Definition: bap.h:292
uint8_t adv_sid
Definition: bap.h:295
uint8_t num_subgroups
Definition: bap.h:313
uint32_t broadcast_id
Definition: bap.h:304
enum bt_bap_big_enc_state encrypt_state
Definition: bap.h:301
struct bt_bap_scan_delegator_subgroup subgroups[0]
Definition: bap.h:316
Definition: bap.h:275
uint8_t metadata_len
Definition: bap.h:280
uint8_t metadata[0]
Definition: bap.h:283
uint32_t bis_sync
Definition: bap.h:277
Stream operation.
Definition: bap.h:486
void(* started)(struct bt_bap_stream *stream)
Stream started callback.
Definition: bap.h:555
void(* stopped)(struct bt_bap_stream *stream, uint8_t reason)
Stream stopped callback.
Definition: bap.h:565
Basic Audio Profile stream structure.
Definition: bap.h:447
struct bt_codec_qos * qos
Definition: bap.h:461
void * group
Definition: bap.h:476
struct bt_bap_stream_ops * ops
Definition: bap.h:464
enum bt_audio_dir dir
Definition: bap.h:449
struct bt_codec * codec
Definition: bap.h:458
struct bt_conn * conn
Definition: bap.h:452
struct bt_bap_ep * ep
Definition: bap.h:455
void * user_data
Definition: bap.h:479
Definition: bap.h:1080
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:1147
void(* discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir)
BAP discovery callback function.
Definition: bap.h:1261
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:1134
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:1190
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:1162
void(* location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc)
Remote Unicast Server Audio Locations.
Definition: bap.h:1093
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:1203
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:1216
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:1177
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:1107
void(* endpoint)(struct bt_conn *conn, enum bt_audio_dir dir, struct bt_bap_ep *ep)
Remote Audio Stream Endoint (ASE) discovered.
Definition: bap.h:1247
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:1119
void(* pac_record)(struct bt_conn *conn, enum bt_audio_dir dir, const struct bt_codec *codec)
Remote Published Audio Capability (PAC) record discovered.
Definition: bap.h:1233
Definition: bap.h:1014
uint8_t packing
Unicast Group packing mode.
Definition: bap.h:1027
size_t params_count
Definition: bap.h:1016
struct bt_bap_unicast_group_stream_pair_param * params
Definition: bap.h:1019
Parameter struct for the unicast group functions.
Definition: bap.h:1006
struct bt_bap_unicast_group_stream_param * rx_param
Definition: bap.h:1008
struct bt_bap_unicast_group_stream_param * tx_param
Definition: bap.h:1011
struct bt_bap_stream * stream
Definition: bap.h:995
struct bt_codec_qos * qos
Definition: bap.h:998
Definition: bap.h:783
int(* disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Disable request callback.
Definition: bap.h:898
int(* reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir, const struct bt_codec *codec, struct bt_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Stream reconfig request callback.
Definition: bap.h:822
int(* start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Start request callback.
Definition: bap.h:869
int(* enable)(struct bt_bap_stream *stream, const struct bt_codec_data *meta, size_t meta_count, struct bt_bap_ascs_rsp *rsp)
Stream Enable request callback.
Definition: bap.h:855
int(* stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Stop callback.
Definition: bap.h:911
int(* release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream release callback.
Definition: bap.h:925
int(* qos)(struct bt_bap_stream *stream, const struct bt_codec_qos *qos, struct bt_bap_ascs_rsp *rsp)
Stream QoS request callback.
Definition: bap.h:839
int(* metadata)(struct bt_bap_stream *stream, const struct bt_codec_data *meta, size_t meta_count, struct bt_bap_ascs_rsp *rsp)
Stream Metadata update request callback.
Definition: bap.h:884
int(* config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir, const struct bt_codec *codec, struct bt_bap_stream **stream, struct bt_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Endpoint config request callback.
Definition: bap.h:802
Codec configuration structure.
Definition: audio.h:181
Audio Stream Quality of Service Preference structure.
Definition: audio.h:447
Codec QoS structure.
Definition: audio.h:389
Codec structure.
Definition: audio.h:293
Bluetooth data.
Definition: bluetooth.h:433
ISO Meta Data structure for received ISO packets.
Definition: iso.h:222
Definition: bluetooth.h:1950
Definition: bluetooth.h:1987
Simple network buffer representation.
Definition: buf.h:83
Network buffer representation.
Definition: buf.h:906
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
static const intptr_t user_data[5]
Definition: main.c:588