From 1c326c01a4a7cc1588482f9679c27cd36c0ffacd Mon Sep 17 00:00:00 2001 From: Frode van der Meeren Date: Wed, 2 Oct 2024 13:30:00 +0200 Subject: [PATCH] bluetooth: tester: audio: Add BIS stopped event BPT callback Add event callback to bttester for BIS stopped events. This adds a BAP event type to the BPT API, enabling tools like Auto-PTS to verify that a stream actually is stopped after requesting to close a BIS. Signed-off-by: Frode van der Meeren --- tests/bluetooth/tester/src/audio/btp/btp_bap.h | 8 ++++++++ .../tester/src/audio/btp_bap_broadcast.c | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tests/bluetooth/tester/src/audio/btp/btp_bap.h b/tests/bluetooth/tester/src/audio/btp/btp_bap.h index d094d5363905098..c9222536f2eafe3 100644 --- a/tests/bluetooth/tester/src/audio/btp/btp_bap.h +++ b/tests/bluetooth/tester/src/audio/btp/btp_bap.h @@ -274,3 +274,11 @@ struct btp_bap_pa_sync_req_ev { uint8_t past_avail; uint16_t pa_interval; } __packed; + +#define BTP_BAP_EV_BIS_STOPPED 0x8b +struct btp_bap_bis_stopped_ev { + bt_addr_le_t address; + uint8_t broadcast_id[BT_AUDIO_BROADCAST_ID_SIZE]; + uint8_t bis_id; + uint8_t bis_stop_reason; +} __packed; diff --git a/tests/bluetooth/tester/src/audio/btp_bap_broadcast.c b/tests/bluetooth/tester/src/audio/btp_bap_broadcast.c index b5243202c058d1b..ff7d40d3ae6ab93 100644 --- a/tests/bluetooth/tester/src/audio/btp_bap_broadcast.c +++ b/tests/bluetooth/tester/src/audio/btp_bap_broadcast.c @@ -125,6 +125,19 @@ static void stream_started(struct bt_bap_stream *stream) btp_send_bis_syced_ev(&broadcaster->address, broadcaster->broadcast_id, b_stream->bis_id); } +static void btp_send_bis_stopped_ev(const bt_addr_le_t *address, uint32_t broadcast_id, + uint8_t bis_id, uint8_t reason) +{ + struct btp_bap_bis_stopped_ev ev; + + bt_addr_le_copy(&ev.address, address); + sys_put_le24(broadcast_id, ev.broadcast_id); + ev.bis_id = bis_id; + ev.bis_stop_reason = reason; + + tester_event(BTP_SERVICE_ID_BAP, BTP_BAP_EV_BIS_STOPPED, &ev, sizeof(ev)); +} + static void stream_stopped(struct bt_bap_stream *stream, uint8_t reason) { struct btp_bap_broadcast_stream *b_stream = stream_bap_to_broadcast(stream); @@ -132,8 +145,10 @@ static void stream_stopped(struct bt_bap_stream *stream, uint8_t reason) LOG_DBG("Stopped stream %p with reason 0x%02X", stream, reason); btp_bap_audio_stream_stopped(&b_stream->audio_stream); - b_stream->bis_synced = false; + broadcaster = &remote_broadcast_sources[b_stream->source_id]; + + btp_send_bis_stopped_ev(&broadcaster->address, broadcaster->broadcast_id, b_stream->bis_id, reason); } static void send_bis_stream_received_ev(const bt_addr_le_t *address, uint32_t broadcast_id,