Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28
29#if defined(CONFIG_BT_BAP_SCAN_DELEGATOR)
30#define BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN CONFIG_BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN
31#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS CONFIG_BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS
32#else
33#define BT_BAP_SCAN_DELEGATOR_MAX_METADATA_LEN 0
34#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS 0
35#endif
36
48#define BT_BAP_BASE_MIN_SIZE 16
49
51#define BT_BAP_BASE_BIS_DATA_MIN_SIZE 2 /* index and length */
52
57
60
63
66
69};
70
75
78
81
84};
85
90
93};
94
96#define BT_BAP_PA_INTERVAL_UNKNOWN 0xFFFF
97
103#define BT_BAP_BIS_SYNC_NO_PREF 0xFFFFFFFF
104
105#if defined(CONFIG_BT_BAP_BROADCAST_SINK)
106/* TODO: Since these are also used for the broadcast assistant,
107 * they should not be tied to the broadcast sink
108 */
109#define BROADCAST_SNK_STREAM_CNT CONFIG_BT_BAP_BROADCAST_SNK_STREAM_COUNT
110#define BROADCAST_SNK_SUBGROUP_CNT CONFIG_BT_BAP_BROADCAST_SNK_SUBGROUP_COUNT
111#else /* !CONFIG_BT_BAP_BROADCAST_SINK */
112#define BROADCAST_SNK_STREAM_CNT 0
113#define BROADCAST_SNK_SUBGROUP_CNT 0
114#endif /* CONFIG_BT_BAP_BROADCAST_SINK*/
115
120
123
126
129
132
135
138};
139
177};
178
209};
210
215
221 union {
244
255 };
256};
257
265#define BT_BAP_ASCS_RSP(c, r) (struct bt_bap_ascs_rsp) { .code = c, .reason = r }
266
268struct bt_bap_broadcast_source;
269
271struct bt_bap_broadcast_sink;
272
274struct bt_bap_unicast_group;
275
277struct bt_bap_ep;
278
279/* TODO: Replace with struct bt_bap_base_subgroup */
284
287
290};
291
296
299
302
305
308
311
317
320
323};
324
335 void (*recv_state_updated)(struct bt_conn *conn,
336 const struct bt_bap_scan_delegator_recv_state *recv_state);
337
359 int (*pa_sync_req)(struct bt_conn *conn,
360 const struct bt_bap_scan_delegator_recv_state *recv_state,
361 bool past_avail, uint16_t pa_interval);
362
376 int (*pa_sync_term_req)(struct bt_conn *conn,
377 const struct bt_bap_scan_delegator_recv_state *recv_state);
378
390 void (*broadcast_code)(struct bt_conn *conn,
391 const struct bt_bap_scan_delegator_recv_state *recv_state,
393
413 int (*bis_sync_req)(struct bt_conn *conn,
414 const struct bt_bap_scan_delegator_recv_state *recv_state,
416};
417
422
425
428
431
435 struct bt_bap_ep *paired_ep;
436};
437
446int bt_bap_ep_get_info(const struct bt_bap_ep *ep, struct bt_bap_ep_info *info);
447
458 struct bt_conn *conn;
459
461 struct bt_bap_ep *ep;
462
465
468
471
472#if defined(CONFIG_BT_BAP_UNICAST_CLIENT)
478 struct bt_bap_iso *bap_iso;
479#endif /* CONFIG_BT_BAP_UNICAST_CLIENT */
480
482 void *group;
483
486
487 /* Internally used list node */
488 sys_snode_t _node;
489};
490
493#if defined(CONFIG_BT_BAP_UNICAST)
502 void (*configured)(struct bt_bap_stream *stream,
503 const struct bt_audio_codec_qos_pref *pref);
504
513 void (*qos_set)(struct bt_bap_stream *stream);
514
522 void (*enabled)(struct bt_bap_stream *stream);
523
532 void (*metadata_updated)(struct bt_bap_stream *stream);
533
541 void (*disabled)(struct bt_bap_stream *stream);
542
551 void (*released)(struct bt_bap_stream *stream);
552#endif /* CONFIG_BT_BAP_UNICAST */
553
562 void (*started)(struct bt_bap_stream *stream);
563
572 void (*stopped)(struct bt_bap_stream *stream, uint8_t reason);
573
574#if defined(CONFIG_BT_AUDIO_RX)
586 void (*recv)(struct bt_bap_stream *stream, const struct bt_iso_recv_info *info,
587 struct net_buf *buf);
588#endif /* CONFIG_BT_AUDIO_RX */
589
590#if defined(CONFIG_BT_AUDIO_TX)
601 void (*sent)(struct bt_bap_stream *stream);
602#endif /* CONFIG_BT_AUDIO_TX */
603};
604
614
628int bt_bap_stream_config(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_bap_ep *ep,
630
645
658int bt_bap_stream_qos(struct bt_conn *conn, struct bt_bap_unicast_group *group);
659
674int bt_bap_stream_enable(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len);
675
687int bt_bap_stream_metadata(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len);
688
702
728
743
758
777int bt_bap_stream_send(struct bt_bap_stream *stream, struct net_buf *buf, uint16_t seq_num,
778 uint32_t ts);
779
799
826 int (*config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir,
827 const struct bt_audio_codec_cfg *codec_cfg, struct bt_bap_stream **stream,
828 struct bt_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp);
829
846 int (*reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir,
847 const struct bt_audio_codec_cfg *codec_cfg,
848 struct bt_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp);
849
863 int (*qos)(struct bt_bap_stream *stream, const struct bt_audio_codec_qos *qos,
864 struct bt_bap_ascs_rsp *rsp);
865
879 int (*enable)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len,
880 struct bt_bap_ascs_rsp *rsp);
881
893 int (*start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
894
908 int (*metadata)(struct bt_bap_stream *stream, const uint8_t meta[], size_t meta_len,
909 struct bt_bap_ascs_rsp *rsp);
910
922 int (*disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
923
935 int (*stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
936
949 int (*release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp);
950};
951
963
975
983typedef void (*bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data);
984
992void bt_bap_unicast_server_foreach_ep(struct bt_conn *conn, bt_bap_ep_func_t func, void *user_data);
993
1004int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream,
1005 struct bt_audio_codec_cfg *codec_cfg,
1006 const struct bt_audio_codec_qos_pref *qos_pref);
1007 /* End of group bt_bap_unicast_server */
1009
1020
1023};
1024
1033
1036};
1037
1041
1044
1052};
1053
1066 struct bt_bap_unicast_group **unicast_group);
1067
1087int bt_bap_unicast_group_add_streams(struct bt_bap_unicast_group *unicast_group,
1089 size_t num_param);
1090
1101int bt_bap_unicast_group_delete(struct bt_bap_unicast_group *unicast_group);
1102
1117 void (*location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc);
1118
1131 void (*available_contexts)(struct bt_conn *conn, enum bt_audio_context snk_ctx,
1132 enum bt_audio_context src_ctx);
1133
1143 void (*config)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1144 enum bt_bap_ascs_reason reason);
1145
1158 void (*qos)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1159 enum bt_bap_ascs_reason reason);
1160
1171 void (*enable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1172 enum bt_bap_ascs_reason reason);
1173
1186 void (*start)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1187 enum bt_bap_ascs_reason reason);
1188
1201 void (*stop)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1202 enum bt_bap_ascs_reason reason);
1203
1214 void (*disable)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1215 enum bt_bap_ascs_reason reason);
1216
1227 void (*metadata)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1228 enum bt_bap_ascs_reason reason);
1229
1240 void (*release)(struct bt_bap_stream *stream, enum bt_bap_ascs_rsp_code rsp_code,
1241 enum bt_bap_ascs_reason reason);
1242
1257 void (*pac_record)(struct bt_conn *conn, enum bt_audio_dir dir,
1258 const struct bt_audio_codec_cap *codec_cap);
1259
1271 void (*endpoint)(struct bt_conn *conn, enum bt_audio_dir dir, struct bt_bap_ep *ep);
1272
1285 void (*discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir);
1286};
1287
1299
1309int bt_bap_unicast_client_discover(struct bt_conn *conn, enum bt_audio_dir dir);
1310 /* End of group bt_bap_unicast_client */
1320 /* Unique index of the BIS */
1322#if CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0
1324 size_t data_len;
1326 uint8_t data[CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE];
1327#endif /* CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0 */
1328};
1329
1331 /* Number of BIS in the subgroup */
1339 /* Array of BIS specific data for each BIS in the subgroup */
1341};
1342
1349
1350 /* Number of subgroups in the BASE */
1352
1353 /* Array of subgroups in the BASE */
1355};
1356
1367int bt_bap_decode_base(struct bt_data *data, struct bt_bap_base *base);
1368 /* End of group bt_bap_broadcast */
1370
1382
1383#if CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0
1389 size_t data_len;
1390
1392 uint8_t *data;
1393#endif /* CONFIG_BT_AUDIO_CODEC_CFG_MAX_DATA_SIZE > 0 */
1394};
1395
1400
1403
1406};
1407
1412
1415
1418
1427
1430
1442};
1443
1461 struct bt_bap_broadcast_source **source);
1462
1482int bt_bap_broadcast_source_reconfig(struct bt_bap_broadcast_source *source,
1483 struct bt_bap_broadcast_source_param *param);
1484
1497int bt_bap_broadcast_source_update_metadata(struct bt_bap_broadcast_source *source,
1498 const uint8_t meta[], size_t meta_len);
1499
1511int bt_bap_broadcast_source_start(struct bt_bap_broadcast_source *source,
1512 struct bt_le_ext_adv *adv);
1513
1524int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source);
1525
1536int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source);
1537
1551int bt_bap_broadcast_source_get_id(struct bt_bap_broadcast_source *source,
1552 uint32_t *const broadcast_id);
1553
1568int bt_bap_broadcast_source_get_base(struct bt_bap_broadcast_source *source,
1569 struct net_buf_simple *base_buf);
1570 /* End of bt_bap_broadcast_source */
1572
1590 void (*base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base);
1591
1603 void (*syncable)(struct bt_bap_broadcast_sink *sink, bool encrypted);
1604
1605 /* Internally used list node */
1606 sys_snode_t _node;
1607};
1608
1614
1633int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t broadcast_id,
1634 struct bt_bap_broadcast_sink **sink);
1635
1654int bt_bap_broadcast_sink_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield,
1655 struct bt_bap_stream *streams[], const uint8_t broadcast_code[16]);
1656
1666int bt_bap_broadcast_sink_stop(struct bt_bap_broadcast_sink *sink);
1667
1678int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink);
1679 /* End of group bt_bap_broadcast_sink */
1681
1688
1703 enum bt_bap_pa_state pa_state);
1704
1714 uint8_t src_id,
1716
1719 struct bt_le_per_adv_sync *pa_sync;
1720
1723
1726
1729
1732};
1733
1748
1752
1755
1758
1761
1769};
1770
1785
1800
1812 const struct bt_bap_scan_delegator_recv_state *recv_state, void *user_data);
1813
1820 void *user_data);
1821
1830 bt_bap_scan_delegator_state_func_t func, void *user_data);
1831
1832/******************************** CLIENT API ********************************/
1833
1840typedef void (*bt_bap_broadcast_assistant_write_cb)(struct bt_conn *conn,
1841 int err);
1842
1853 void (*discover)(struct bt_conn *conn, int err,
1854 uint8_t recv_state_count);
1855
1865 void (*scan)(const struct bt_le_scan_recv_info *info,
1866 uint32_t broadcast_id);
1867
1877 void (*recv_state)(struct bt_conn *conn, int err,
1879
1887 void (*recv_state_removed)(struct bt_conn *conn, int err,
1888 uint8_t src_id);
1889
1896 void (*scan_start)(struct bt_conn *conn, int err);
1897
1904 void (*scan_stop)(struct bt_conn *conn, int err);
1905
1912 void (*add_src)(struct bt_conn *conn, int err);
1913
1920 void (*mod_src)(struct bt_conn *conn, int err);
1921
1928 void (*broadcast_code)(struct bt_conn *conn, int err);
1929
1936 void (*rem_src)(struct bt_conn *conn, int err);
1937};
1938
1948int bt_bap_broadcast_assistant_discover(struct bt_conn *conn);
1949
1968 bool start_scan);
1969
1977
1982
1987
1990
1993
1996
2003
2006
2009};
2010
2020 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_add_src_param *param);
2021
2026
2029
2036
2039
2042};
2043
2052 struct bt_conn *conn, const struct bt_bap_broadcast_assistant_mod_src_param *param);
2053
2063 struct bt_conn *conn, uint8_t src_id,
2064 const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]);
2065
2073int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id);
2074
2084 uint8_t idx);
2085 /* end of bt_bap */
2087
2088#ifdef __cplusplus
2089}
2090#endif
2091
2092#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)
POSIX wrapper for zsock_recv.
Definition: socket.h:809
bt_audio_dir
Audio Capability type.
Definition: audio.h:385
bt_audio_location
Location values for BT Audio.
Definition: audio.h:247
#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_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_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_source_get_id(struct bt_bap_broadcast_source *source, uint32_t *const broadcast_id)
Get the broadcast ID of a broadcast source.
int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source)
Delete 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_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_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_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.
void(* bt_bap_ep_func_t)(struct bt_bap_ep *ep, void *user_data)
The callback function called for each endpoint.
Definition: bap.h:983
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_audio_codec_qos_pref *qos_pref)
Initialize and configure a new ASE.
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:87
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.
#define BT_BAP_SCAN_DELEGATOR_MAX_SUBGROUPS
Definition: bap.h:34
#define BROADCAST_SNK_SUBGROUP_CNT
Definition: bap.h:113
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.
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:1840
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
Broadcast Isochronous Group encryption state reported by the Scan Delegator.
Definition: bap.h:72
#define BROADCAST_SNK_STREAM_CNT
Definition: bap.h:112
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_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:33
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:186
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:146
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.
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
Periodic advertising state reported by the Scan Delegator.
Definition: bap.h:54
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_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
Endpoint states.
Definition: bap.h:117
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:1811
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
Opcode not supported.
Definition: bap.h:89
@ BT_BAP_BASS_ERR_INVALID_SRC_ID
Invalid source ID supplied.
Definition: bap.h:92
@ BT_BAP_BIG_ENC_STATE_BCODE_REQ
The Broadcast Isochronous Group broadcast code requested.
Definition: bap.h:77
@ BT_BAP_BIG_ENC_STATE_NO_ENC
The Broadcast Isochronous Group not encrypted.
Definition: bap.h:74
@ BT_BAP_BIG_ENC_STATE_BAD_CODE
The Broadcast Isochronous Group bad broadcast code.
Definition: bap.h:83
@ BT_BAP_BIG_ENC_STATE_DEC
The Broadcast Isochronous Group decrypted.
Definition: bap.h:80
@ BT_BAP_ASCS_REASON_NONE
No reason.
Definition: bap.h:188
@ BT_BAP_ASCS_REASON_PD
Presendation delay.
Definition: bap.h:206
@ BT_BAP_ASCS_REASON_FRAMING
Framing.
Definition: bap.h:196
@ BT_BAP_ASCS_REASON_CODEC_DATA
Codec configuration.
Definition: bap.h:192
@ BT_BAP_ASCS_REASON_SDU
Maximum SDU size.
Definition: bap.h:200
@ BT_BAP_ASCS_REASON_CODEC
Codec ID.
Definition: bap.h:190
@ BT_BAP_ASCS_REASON_PHY
PHY.
Definition: bap.h:198
@ BT_BAP_ASCS_REASON_LATENCY
Max transport latency.
Definition: bap.h:204
@ BT_BAP_ASCS_REASON_CIS
Invalid CIS mapping.
Definition: bap.h:208
@ BT_BAP_ASCS_REASON_RTN
RTN.
Definition: bap.h:202
@ BT_BAP_ASCS_REASON_INTERVAL
SDU interval.
Definition: bap.h:194
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE_STATE
Invalid ASE state.
Definition: bap.h:156
@ BT_BAP_ASCS_RSP_CODE_METADATA_INVALID
Invalid metadata.
Definition: bap.h:172
@ BT_BAP_ASCS_RSP_CODE_NOT_SUPPORTED
Server did not support operation by client.
Definition: bap.h:150
@ BT_BAP_ASCS_RSP_CODE_CONF_UNSUPPORTED
Configuration parameters not supported by server.
Definition: bap.h:162
@ BT_BAP_ASCS_RSP_CODE_INVALID_ASE
Invalid ASE ID.
Definition: bap.h:154
@ BT_BAP_ASCS_RSP_CODE_INVALID_DIR
Invalid operation for direction.
Definition: bap.h:158
@ BT_BAP_ASCS_RSP_CODE_CONF_INVALID
Invalid Configuration parameters.
Definition: bap.h:166
@ BT_BAP_ASCS_RSP_CODE_CAP_UNSUPPORTED
Capabilities not supported by server.
Definition: bap.h:160
@ BT_BAP_ASCS_RSP_CODE_NO_MEM
Server has insufficient resources.
Definition: bap.h:174
@ BT_BAP_ASCS_RSP_CODE_METADATA_REJECTED
Metadata rejected by server.
Definition: bap.h:170
@ BT_BAP_ASCS_RSP_CODE_UNSPECIFIED
Unspecified error.
Definition: bap.h:176
@ BT_BAP_ASCS_RSP_CODE_INVALID_LENGTH
Server rejected due to invalid operation length.
Definition: bap.h:152
@ BT_BAP_ASCS_RSP_CODE_METADATA_UNSUPPORTED
Unsupported metadata.
Definition: bap.h:168
@ BT_BAP_ASCS_RSP_CODE_SUCCESS
Server completed operation successfully.
Definition: bap.h:148
@ BT_BAP_ASCS_RSP_CODE_CONF_REJECTED
Configuration parameters rejected by server.
Definition: bap.h:164
@ BT_BAP_PA_STATE_NOT_SYNCED
The periodic advertising has not been synchronized.
Definition: bap.h:56
@ BT_BAP_PA_STATE_FAILED
Failed to synchronized to periodic advertising.
Definition: bap.h:65
@ BT_BAP_PA_STATE_SYNCED
Synchronized to periodic advertising.
Definition: bap.h:62
@ BT_BAP_PA_STATE_INFO_REQ
Waiting for SyncInfo from Broadcast Assistant.
Definition: bap.h:59
@ BT_BAP_PA_STATE_NO_PAST
No periodic advertising sync transfer receiver from Broadcast Assistant.
Definition: bap.h:68
@ BT_BAP_EP_STATE_ENABLING
Audio Stream Endpoint Enabling state.
Definition: bap.h:128
@ BT_BAP_EP_STATE_IDLE
Audio Stream Endpoint Idle state.
Definition: bap.h:119
@ BT_BAP_EP_STATE_CODEC_CONFIGURED
Audio Stream Endpoint Codec Configured state.
Definition: bap.h:122
@ BT_BAP_EP_STATE_RELEASING
Audio Stream Endpoint Streaming state.
Definition: bap.h:137
@ BT_BAP_EP_STATE_QOS_CONFIGURED
Audio Stream Endpoint QoS Configured state.
Definition: bap.h:125
@ BT_BAP_EP_STATE_DISABLING
Audio Stream Endpoint Disabling state.
Definition: bap.h:134
@ BT_BAP_EP_STATE_STREAMING
Audio Stream Endpoint Streaming state.
Definition: bap.h:131
struct _snode sys_snode_t
Single-linked list node structure.
Definition: slist.h:39
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:312
Codec specific configuration structure.
Definition: audio.h:340
Audio Stream Quality of Service Preference structure.
Definition: audio.h:510
Codec QoS structure.
Definition: audio.h:452
Structure storing values of fields of ASE Control Point notification.
Definition: bap.h:212
enum bt_bap_ascs_reason reason
Response reason.
Definition: bap.h:243
enum bt_audio_metadata_type metadata_type
Response metadata type.
Definition: bap.h:254
enum bt_bap_ascs_rsp_code code
Value of the Response Code field.
Definition: bap.h:214
Definition: bap.h:1319
uint8_t index
Definition: bap.h:1321
Definition: bap.h:1330
struct bt_audio_codec_cfg codec_cfg
Codec information for the subgroup.
Definition: bap.h:1338
struct bt_bap_base_bis_data bis_data[0]
Definition: bap.h:1340
size_t bis_count
Definition: bap.h:1332
Definition: bap.h:1343
size_t subgroup_count
Definition: bap.h:1351
uint32_t pd
QoS Presentation Delay in microseconds.
Definition: bap.h:1348
struct bt_bap_base_subgroup subgroups[0]
Definition: bap.h:1354
Parameters for adding a source to a Broadcast Audio Scan Service server.
Definition: bap.h:1984
uint8_t num_subgroups
Number of subgroups.
Definition: bap.h:2005
bt_addr_le_t addr
Address of the advertiser.
Definition: bap.h:1986
uint8_t adv_sid
SID of the advertising set.
Definition: bap.h:1989
uint16_t pa_interval
Periodic advertising interval in milliseconds.
Definition: bap.h:2002
struct bt_bap_scan_delegator_subgroup * subgroups
Pointer to array of subgroups.
Definition: bap.h:2008
bool pa_sync
Whether to sync to periodic advertisements.
Definition: bap.h:1992
uint32_t broadcast_id
24-bit broadcast ID
Definition: bap.h:1995
Definition: bap.h:1843
void(* discover)(struct bt_conn *conn, int err, uint8_t recv_state_count)
Callback function for bt_bap_broadcast_assistant_discover.
Definition: bap.h:1853
void(* broadcast_code)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_broadcast_code().
Definition: bap.h:1928
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:1877
void(* scan_stop)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_stop().
Definition: bap.h:1904
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:1887
void(* mod_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_mod_src().
Definition: bap.h:1920
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:1865
void(* scan_start)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_scan_start().
Definition: bap.h:1896
void(* add_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_add_src().
Definition: bap.h:1912
void(* rem_src)(struct bt_conn *conn, int err)
Callback function for bt_bap_broadcast_assistant_rem_src().
Definition: bap.h:1936
Parameters for modifying a source.
Definition: bap.h:2023
uint8_t num_subgroups
Number of subgroups.
Definition: bap.h:2038
uint8_t src_id
Source ID of the receive state.
Definition: bap.h:2025
bool pa_sync
Whether to sync to periodic advertisements.
Definition: bap.h:2028
struct bt_bap_scan_delegator_subgroup * subgroups
Pointer to array of subgroups.
Definition: bap.h:2041
uint16_t pa_interval
Periodic advertising interval.
Definition: bap.h:2035
Broadcast Audio Sink callback structure.
Definition: bap.h:1581
void(* base_recv)(struct bt_bap_broadcast_sink *sink, const struct bt_bap_base *base)
Broadcast Audio Source Endpoint (BASE) received.
Definition: bap.h:1590
void(* syncable)(struct bt_bap_broadcast_sink *sink, bool encrypted)
Broadcast sink is syncable.
Definition: bap.h:1603
Broadcast Source create parameters.
Definition: bap.h:1409
uint8_t packing
Broadcast Source packing mode.
Definition: bap.h:1426
uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]
Broadcast code.
Definition: bap.h:1441
size_t params_count
The number of parameters in subgroup_params.
Definition: bap.h:1411
struct bt_bap_broadcast_source_subgroup_param * params
Array of stream parameters.
Definition: bap.h:1414
bool encryption
Whether or not to encrypt the streams.
Definition: bap.h:1429
struct bt_audio_codec_qos * qos
Quality of Service configuration.
Definition: bap.h:1417
Broadcast Source stream parameters.
Definition: bap.h:1379
struct bt_bap_stream * stream
Audio stream.
Definition: bap.h:1381
Broadcast Source subgroup parameters.
Definition: bap.h:1397
struct bt_audio_codec_cfg * codec_cfg
Subgroup Codec configuration.
Definition: bap.h:1405
size_t params_count
The number of parameters in stream_params.
Definition: bap.h:1399
struct bt_bap_broadcast_source_stream_param * params
Array of stream parameters.
Definition: bap.h:1402
Structure holding information of audio stream endpoint.
Definition: bap.h:419
uint8_t id
The ID of the endpoint.
Definition: bap.h:421
enum bt_bap_ep_state state
The state of the endpoint.
Definition: bap.h:424
struct bt_bap_ep * paired_ep
Pointer to paired endpoint if the endpoint is part of a bidirectional CIS, otherwise NULL.
Definition: bap.h:435
enum bt_audio_dir dir
Capabilities type.
Definition: bap.h:427
bool can_send
True if the stream associated with the endpoint is able to send data.
Definition: bap.h:430
struct bt_bap_scan_delegator_subgroup subgroups[0]
Subgroup specific information.
Definition: bap.h:1731
uint8_t num_subgroups
Number of subgroups.
Definition: bap.h:1728
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition: bap.h:1722
struct bt_le_per_adv_sync * pa_sync
The periodic adverting sync.
Definition: bap.h:1719
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition: bap.h:1725
Definition: bap.h:325
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:359
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:390
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:376
void(* recv_state_updated)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state)
Receive state updated.
Definition: bap.h:335
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:413
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition: bap.h:1757
struct bt_bap_scan_delegator_subgroup subgroups[0]
Subgroup specific information.
Definition: bap.h:1768
uint8_t num_subgroups
Number of subgroups.
Definition: bap.h:1760
uint8_t src_id
The periodic adverting sync.
Definition: bap.h:1751
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition: bap.h:1754
Represents the Broadcast Audio Scan Service receive state.
Definition: bap.h:293
uint8_t bad_code[BT_AUDIO_BROADCAST_CODE_SIZE]
The bad broadcast code.
Definition: bap.h:316
uint8_t src_id
The source ID
Definition: bap.h:295
enum bt_bap_pa_state pa_sync_state
The periodic adverting sync state.
Definition: bap.h:304
bt_addr_le_t addr
The Bluetooth address.
Definition: bap.h:298
uint8_t adv_sid
The advertising set ID.
Definition: bap.h:301
uint8_t num_subgroups
Number of subgroups.
Definition: bap.h:319
uint32_t broadcast_id
The 24-bit broadcast ID.
Definition: bap.h:310
enum bt_bap_big_enc_state encrypt_state
The broadcast isochronous group encryption state.
Definition: bap.h:307
struct bt_bap_scan_delegator_subgroup subgroups[0]
Subgroup specific information.
Definition: bap.h:322
Struct to hold subgroup specific information for the receive state.
Definition: bap.h:281
uint8_t metadata_len
Length of the metadata.
Definition: bap.h:286
uint8_t metadata[0]
The metadata.
Definition: bap.h:289
uint32_t bis_sync
BIS synced bitfield.
Definition: bap.h:283
Stream operation.
Definition: bap.h:492
void(* started)(struct bt_bap_stream *stream)
Stream started callback.
Definition: bap.h:562
void(* stopped)(struct bt_bap_stream *stream, uint8_t reason)
Stream stopped callback.
Definition: bap.h:572
Basic Audio Profile stream structure.
Definition: bap.h:456
void * group
Unicast or Broadcast group - Used internally.
Definition: bap.h:482
struct bt_audio_codec_cfg * codec_cfg
Codec Configuration.
Definition: bap.h:464
struct bt_bap_stream_ops * ops
Audio stream operations.
Definition: bap.h:470
struct bt_audio_codec_qos * qos
QoS Configuration.
Definition: bap.h:467
struct bt_conn * conn
Connection reference.
Definition: bap.h:458
struct bt_bap_ep * ep
Endpoint reference.
Definition: bap.h:461
void * user_data
Stream user data.
Definition: bap.h:485
Unicast Client callback structure.
Definition: bap.h:1104
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:1171
void(* discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir)
BAP discovery callback function.
Definition: bap.h:1285
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:1158
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:1257
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:1214
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:1186
void(* location)(struct bt_conn *conn, enum bt_audio_dir dir, enum bt_audio_location loc)
Remote Unicast Server Audio Locations.
Definition: bap.h:1117
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:1227
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:1240
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:1201
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:1131
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:1271
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:1143
Definition: bap.h:1038
uint8_t packing
Unicast Group packing mode.
Definition: bap.h:1051
size_t params_count
The number of parameters in params.
Definition: bap.h:1040
struct bt_bap_unicast_group_stream_pair_param * params
Array of stream parameters.
Definition: bap.h:1043
Parameter struct for the unicast group functions.
Definition: bap.h:1030
struct bt_bap_unicast_group_stream_param * rx_param
Pointer to a receiving stream parameters.
Definition: bap.h:1032
struct bt_bap_unicast_group_stream_param * tx_param
Pointer to a transmiting stream parameters.
Definition: bap.h:1035
Parameter struct for each stream in the unicast group.
Definition: bap.h:1017
struct bt_audio_codec_qos * qos
The QoS settings for the stream object.
Definition: bap.h:1022
struct bt_bap_stream * stream
Pointer to a stream object.
Definition: bap.h:1019
Unicast Server callback structure.
Definition: bap.h:807
int(* reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir, const struct bt_audio_codec_cfg *codec_cfg, struct bt_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Stream reconfig request callback.
Definition: bap.h:846
int(* disable)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Disable request callback.
Definition: bap.h:922
int(* start)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Start request callback.
Definition: bap.h:893
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:908
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:879
int(* qos)(struct bt_bap_stream *stream, const struct bt_audio_codec_qos *qos, struct bt_bap_ascs_rsp *rsp)
Stream QoS request callback.
Definition: bap.h:863
int(* stop)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream Stop callback.
Definition: bap.h:935
int(* release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp)
Stream release callback.
Definition: bap.h:949
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_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp)
Endpoint config request callback.
Definition: bap.h:826
Bluetooth data.
Definition: bluetooth.h:433
ISO Meta Data structure for received ISO packets.
Definition: iso.h:296
ISO Meta Data structure for transmitted ISO packets.
Definition: iso.h:311
LE advertisement and scan response packet information.
Definition: bluetooth.h:2005
Simple network buffer representation.
Definition: buf.h:83
Network buffer representation.
Definition: buf.h:906