blob: cbecb446b3a8ac12eb1d069d21163889a4c2d4a4 [file] [log] [blame]
/* btp_bap_broadcast.h - Bluetooth BAP Tester */
/*
* Copyright (c) 2023 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/bluetooth/audio/cap.h>
struct btp_bap_broadcast_stream {
struct btp_bap_audio_stream audio_stream;
struct bt_audio_codec_cfg codec_cfg;
uint8_t bis_id;
uint8_t subgroup_id;
bool bis_synced;
uint8_t source_id;
bool in_use;
bool already_sent;
};
/* According to BT spec, a Broadcast Source can configure and establish one or more BIGs,
* each containing one or more BISes that are used to transport broadcast Audio Streams.
* For each BIG, the Broadcast Source shall generate a Broadcast_ID.
* For the time being, let's treat broadcast source as one BIG.
*/
struct btp_bap_broadcast_remote_source {
bt_addr_le_t address;
uint32_t broadcast_id;
struct btp_bap_broadcast_stream streams[CONFIG_BT_BAP_BROADCAST_SNK_STREAM_COUNT];
struct bt_bap_stream *sink_streams[CONFIG_BT_BAP_BROADCAST_SNK_STREAM_COUNT];
struct bt_bap_broadcast_sink *sink;
struct bt_audio_codec_qos qos;
/* BIS Index bitfield read from Base */
uint32_t bis_index_bitfield;
/* BIS Index bitfield read from sync request */
uint32_t requested_bis_sync;
bool assistant_request;
uint8_t sink_broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE];
const struct bt_bap_scan_delegator_recv_state *sink_recv_state;
};
struct btp_bap_broadcast_local_source {
uint32_t broadcast_id;
struct bt_audio_codec_qos qos;
struct btp_bap_broadcast_stream streams[CONFIG_BT_BAP_BROADCAST_SRC_STREAM_COUNT];
struct bt_audio_codec_cfg subgroup_codec_cfg[CONFIG_BT_BAP_BROADCAST_SRC_SUBGROUP_COUNT];
/* Only for BTP BAP commands */
struct bt_bap_broadcast_source *bap_broadcast;
/* Only for BTP CAP commands */
struct bt_cap_broadcast_source *cap_broadcast;
};
int btp_bap_broadcast_init(void);
struct btp_bap_broadcast_local_source *btp_bap_broadcast_local_source_get(uint8_t source_id);
struct btp_bap_broadcast_stream *btp_bap_broadcast_stream_alloc(
struct btp_bap_broadcast_local_source *source);
uint8_t btp_bap_broadcast_source_setup(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_source_release(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_adv_start(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_adv_stop(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_source_start(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_source_stop(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_sink_setup(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_sink_release(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_scan_start(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_scan_stop(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_sink_sync(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_sink_stop(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_sink_bis_sync(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_discover_scan_delegators(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_scan_start(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_scan_stop(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_add_src(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_remove_src(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_modify_src(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_set_broadcast_code(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
uint8_t btp_bap_broadcast_assistant_send_past(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);