Zephyr Project API  3.4.0
A Scalable Open Source RTOS
cap.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022-2023 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CAP_H_
8#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CAP_H_
9
22#include <stdint.h>
23
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
34struct bt_cap_broadcast_source;
35
55 struct bt_csip_set_member_svc_inst **svc_inst);
56
59#if defined(CONFIG_BT_BAP_UNICAST_CLIENT)
72 void (*unicast_discovery_complete)(
73 struct bt_conn *conn, int err,
74 const struct bt_csip_set_coordinator_csis_inst *csis_inst);
75
88 void (*unicast_start_complete)(struct bt_bap_unicast_group *unicast_group,
89 int err, struct bt_conn *conn);
90
101 void (*unicast_update_complete)(int err, struct bt_conn *conn);
102
121 void (*unicast_stop_complete)(struct bt_bap_unicast_group *unicast_group,
122 int err, struct bt_conn *conn);
123#endif /* CONFIG_BT_BAP_UNICAST_CLIENT */
124};
125
136int bt_cap_initiator_unicast_discover(struct bt_conn *conn);
137
144};
145
149 struct bt_conn *member;
150
153};
154
158};
159
168
172
175
177 struct bt_bap_ep *ep;
178
187
190};
191
195
197 size_t count;
198
201};
202
206
209
216};
217
226
244 struct bt_bap_unicast_group *unicast_group);
245
261 size_t count);
262
276int bt_cap_initiator_unicast_audio_stop(struct bt_bap_unicast_group *unicast_group);
277
301
305
311
314};
315
319
322
325};
326
330
333
336
345
348
362};
363
379 const struct bt_cap_initiator_broadcast_create_param *param,
380 struct bt_cap_broadcast_source **broadcast_source);
381
401int bt_cap_initiator_broadcast_audio_start(struct bt_cap_broadcast_source *broadcast_source,
402 struct bt_le_ext_adv *adv);
417int bt_cap_initiator_broadcast_audio_update(struct bt_cap_broadcast_source *broadcast_source,
418 const struct bt_codec_data meta[],
419 size_t meta_count);
420
433int bt_cap_initiator_broadcast_audio_stop(struct bt_cap_broadcast_source *broadcast_source);
434
435/*
436 * @brief Delete Common Audio Profile broadcast source
437 *
438 * This can only be done after the broadcast source has been stopped by calling
439 * bt_cap_initiator_broadcast_audio_stop() and after the
440 * bt_bap_stream_ops.stopped() callback has been called for all streams in the
441 * broadcast source.
442 *
443 * @note @kconfig{CONFIG_BT_CAP_INITIATOR} and
444 * @kconfig{CONFIG_BT_BAP_BROADCAST_SOURCE} must be enabled for this function
445 * to be enabled.
446 *
447 * @param broadcast_source The broadcast source to delete.
448 * The @p broadcast_source will be invalidated.
449 *
450 * @return 0 on success or negative error value on failure.
451 */
452int bt_cap_initiator_broadcast_audio_delete(struct bt_cap_broadcast_source *broadcast_source);
453
468int bt_cap_initiator_broadcast_get_id(const struct bt_cap_broadcast_source *broadcast_source,
469 uint32_t *const broadcast_id);
470
486int bt_cap_initiator_broadcast_get_base(struct bt_cap_broadcast_source *broadcast_source,
487 struct net_buf_simple *base_buf);
488
491 struct bt_bap_unicast_group *unicast_group;
492
500
514};
515
533 struct bt_cap_broadcast_source **source);
534
541 struct bt_cap_broadcast_source *broadcast_source;
542
545
553 size_t count;
554
557};
558
576 struct bt_bap_unicast_group **unicast_group);
577
578#ifdef __cplusplus
579}
580#endif
581
586#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CAP_H_ */
Bluetooth Audio handling.
Header for Bluetooth BAP.
ZTEST_BMEM int count
Definition: main.c:33
#define BT_AUDIO_BROADCAST_CODE_SIZE
Definition: audio.h:42
int bt_cap_initiator_unicast_audio_stop(struct bt_bap_unicast_group *unicast_group)
Stop unicast audio streams for a unicast group.
int bt_cap_initiator_broadcast_audio_start(struct bt_cap_broadcast_source *broadcast_source, struct bt_le_ext_adv *adv)
Start Common Audio Profile broadcast source.
int bt_cap_initiator_broadcast_to_unicast(const struct bt_cap_broadcast_to_unicast_param *param, struct bt_bap_unicast_group **unicast_group)
Hands over the data streams in a broadcast source to a unicast group.
int bt_cap_initiator_unicast_audio_update(const struct bt_cap_unicast_audio_update_param params[], size_t count)
Update unicast audio streams.
int bt_cap_initiator_register_cb(const struct bt_cap_initiator_cb *cb)
Register Common Audio Profile callbacks.
int bt_cap_initiator_broadcast_audio_update(struct bt_cap_broadcast_source *broadcast_source, const struct bt_codec_data meta[], size_t meta_count)
Update broadcast audio streams for a Common Audio Profile broadcast source.
int bt_cap_initiator_unicast_to_broadcast(const struct bt_cap_unicast_to_broadcast_param *param, struct bt_cap_broadcast_source **source)
Hands over the data streams in a unicast group to a broadcast source.
int bt_cap_initiator_broadcast_get_base(struct bt_cap_broadcast_source *broadcast_source, struct net_buf_simple *base_buf)
Get the Broadcast Audio Stream Endpoint of a Common Audio Profile broadcast source.
int bt_cap_initiator_broadcast_audio_create(const struct bt_cap_initiator_broadcast_create_param *param, struct bt_cap_broadcast_source **broadcast_source)
Create a Common Audio Profile broadcast source.
int bt_cap_initiator_unicast_audio_cancel(void)
Cancel any current Common Audio Profile procedure.
int bt_cap_initiator_unicast_audio_start(const struct bt_cap_unicast_audio_start_param *param, struct bt_bap_unicast_group *unicast_group)
Setup and start unicast audio streams for a set of devices.
int bt_cap_initiator_unicast_discover(struct bt_conn *conn)
Discovers audio support on a remote device.
void bt_cap_stream_ops_register(struct bt_cap_stream *stream, struct bt_bap_stream_ops *ops)
Register Audio operations for a Common Audio Profile stream.
int bt_cap_initiator_broadcast_audio_delete(struct bt_cap_broadcast_source *broadcast_source)
bt_cap_set_type
Definition: cap.h:139
int bt_cap_initiator_broadcast_audio_stop(struct bt_cap_broadcast_source *broadcast_source)
Stop broadcast audio streams for a Common Audio Profile broadcast source.
int bt_cap_acceptor_register(const struct bt_csip_set_member_register_param *param, struct bt_csip_set_member_svc_inst **svc_inst)
Register the Common Audio Service.
int bt_cap_initiator_broadcast_get_id(const struct bt_cap_broadcast_source *broadcast_source, uint32_t *const broadcast_id)
Get the broadcast ID of a Common Audio Profile broadcast source.
@ BT_CAP_SET_TYPE_CSIP
Definition: cap.h:143
@ BT_CAP_SET_TYPE_AD_HOC
Definition: cap.h:141
#define BT_ISO_BROADCAST_CODE_SIZE
Definition: iso.h:83
Bluetooth ISO handling.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Stream operation.
Definition: bap.h:486
Basic Audio Profile stream structure.
Definition: bap.h:447
union bt_cap_set_member ** members
Definition: cap.h:556
enum bt_cap_set_type type
Definition: cap.h:544
size_t count
The number of set members in members.
Definition: cap.h:553
struct bt_cap_broadcast_source * broadcast_source
The source broadcast source with the streams.
Definition: cap.h:541
struct bt_cap_initiator_broadcast_subgroup_param * subgroup_params
Definition: cap.h:332
bool encryption
Definition: cap.h:347
uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]
16-octet broadcast code.
Definition: cap.h:361
struct bt_codec_qos * qos
Definition: cap.h:335
uint8_t packing
Broadcast Source packing mode.
Definition: cap.h:344
size_t subgroup_count
Definition: cap.h:329
struct bt_codec_data * data
Definition: cap.h:313
struct bt_cap_stream * stream
Definition: cap.h:304
size_t data_count
Definition: cap.h:310
struct bt_codec * codec
Definition: cap.h:324
struct bt_cap_initiator_broadcast_stream_param * stream_params
Definition: cap.h:321
size_t stream_count
Definition: cap.h:318
Definition: cap.h:58
Definition: cap.h:155
struct bt_bap_stream_ops * ops
Definition: cap.h:157
struct bt_bap_stream bap_stream
Definition: cap.h:156
enum bt_cap_set_type type
Definition: cap.h:194
size_t count
Definition: cap.h:197
struct bt_cap_unicast_audio_start_stream_param * stream_params
Definition: cap.h:200
struct bt_cap_stream * stream
Stream for the member.
Definition: cap.h:174
struct bt_codec * codec
Codec configuration.
Definition: cap.h:186
union bt_cap_set_member member
Definition: cap.h:171
struct bt_bap_ep * ep
Definition: cap.h:177
struct bt_codec_qos * qos
Definition: cap.h:189
struct bt_codec_data * meta
The new metadata.
Definition: cap.h:215
struct bt_cap_stream * stream
Stream for the member.
Definition: cap.h:205
size_t meta_count
Definition: cap.h:208
struct bt_bap_unicast_group * unicast_group
Definition: cap.h:491
uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]
16-octet broadcast code.
Definition: cap.h:513
bool encrypt
Whether or not to encrypt the streams.
Definition: cap.h:499
Codec configuration structure.
Definition: audio.h:181
Codec QoS structure.
Definition: audio.h:389
Codec structure.
Definition: audio.h:293
Struct representing a coordinated set instance on a remote device.
Definition: csip.h:257
Definition: csip.h:111
Simple network buffer representation.
Definition: buf.h:83
Definition: cap.h:147
struct bt_conn * member
Definition: cap.h:149
struct bt_csip_set_coordinator_csis_inst * csip
Definition: cap.h:152