Skip to content

Commit 92a5ca0

Browse files
Thalleyrlubos
authored andcommitted
[nrf fromtree] tests: Bluetooth: Add ASCS CIS connection events
Add support for the ASCS CIS connection state events. Signed-off-by: Emil Gydesen <[email protected]> (cherry picked from commit 29f4f24)
1 parent b47a92d commit 92a5ca0

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

tests/bluetooth/tester/src/audio/btp/btp_ascs.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,20 @@ struct btp_ascs_ase_state_changed_ev {
117117
uint8_t state;
118118
} __packed;
119119

120+
#define BTP_ASCS_EV_CIS_CONNECTED 0x83
121+
struct btp_ascs_cis_connected_ev {
122+
bt_addr_le_t address;
123+
uint8_t ase_id;
124+
uint8_t cis_id;
125+
} __packed;
126+
127+
#define BTP_ASCS_EV_CIS_DISCONNECTED 0x84
128+
struct btp_ascs_cis_disconnected_ev {
129+
bt_addr_le_t address;
130+
uint8_t ase_id;
131+
uint8_t cis_id;
132+
uint8_t reason;
133+
} __packed;
134+
120135
#define BTP_ASCS_STATUS_SUCCESS 0x00
121136
#define BTP_ASCS_STATUS_FAILED 0x01

tests/bluetooth/tester/src/audio/btp_bap_unicast.c

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77
*/
88

99
#include <stddef.h>
10+
#include <stdint.h>
1011
#include <errno.h>
1112

13+
#include <zephyr/bluetooth/addr.h>
1214
#include <zephyr/bluetooth/audio/bap.h>
1315
#include <zephyr/bluetooth/bluetooth.h>
1416
#include <zephyr/bluetooth/conn.h>
1517
#include <zephyr/bluetooth/iso.h>
18+
#include <zephyr/sys/__assert.h>
1619
#include <zephyr/types.h>
1720
#include <zephyr/kernel.h>
1821
#include <zephyr/sys/ring_buffer.h>
@@ -168,6 +171,37 @@ static void btp_send_ascs_ase_state_changed_ev(struct bt_conn *conn, uint8_t ase
168171
tester_event(BTP_SERVICE_ID_ASCS, BTP_ASCS_EV_ASE_STATE_CHANGED, &ev, sizeof(ev));
169172
}
170173

174+
static void btp_send_ascs_cis_connected_ev(const struct bt_bap_stream *stream)
175+
{
176+
struct btp_bap_unicast_stream *u_stream;
177+
struct btp_ascs_cis_connected_ev ev;
178+
179+
u_stream = stream_bap_to_unicast(stream);
180+
__ASSERT(u_stream != NULL, "Failed to get unicast_stream from %p", stream);
181+
182+
bt_addr_le_copy(&ev.address, bt_conn_get_dst(stream->conn));
183+
ev.ase_id = u_stream->ase_id;
184+
ev.cis_id = u_stream->cis_id;
185+
186+
tester_event(BTP_SERVICE_ID_ASCS, BTP_ASCS_EV_CIS_CONNECTED, &ev, sizeof(ev));
187+
}
188+
189+
static void btp_send_ascs_cis_disconnected_ev(const struct bt_bap_stream *stream, uint8_t reason)
190+
{
191+
struct btp_bap_unicast_stream *u_stream;
192+
struct btp_ascs_cis_disconnected_ev ev;
193+
194+
u_stream = stream_bap_to_unicast(stream);
195+
__ASSERT(u_stream != NULL, "Failed to get unicast_stream from %p", stream);
196+
197+
bt_addr_le_copy(&ev.address, bt_conn_get_dst(stream->conn));
198+
ev.ase_id = u_stream->ase_id;
199+
ev.cis_id = u_stream->cis_id;
200+
ev.reason = reason;
201+
202+
tester_event(BTP_SERVICE_ID_ASCS, BTP_ASCS_EV_CIS_DISCONNECTED, &ev, sizeof(ev));
203+
}
204+
171205
static void btp_send_ascs_operation_completed_ev(struct bt_conn *conn, uint8_t ase_id,
172206
uint8_t opcode, uint8_t status)
173207
{
@@ -669,6 +703,15 @@ static void stream_connected_cb(struct bt_bap_stream *stream)
669703
BTP_ASCS_STATUS_SUCCESS);
670704
}
671705
}
706+
707+
btp_send_ascs_cis_connected_ev(stream);
708+
}
709+
710+
static void stream_disconnected_cb(struct bt_bap_stream *stream, uint8_t reason)
711+
{
712+
LOG_DBG("Disconnected stream %p: 0x%02X", stream, reason);
713+
714+
btp_send_ascs_cis_disconnected_ev(stream, reason);
672715
}
673716

674717
static void stream_stopped_cb(struct bt_bap_stream *stream, uint8_t reason)
@@ -749,6 +792,7 @@ static struct bt_bap_stream_ops stream_ops = {
749792
.recv = stream_recv_cb,
750793
.sent = btp_bap_audio_stream_sent_cb,
751794
.connected = stream_connected_cb,
795+
.disconnected = stream_disconnected_cb,
752796
};
753797

754798
struct btp_bap_unicast_stream *btp_bap_unicast_stream_alloc(

tests/bsim/bluetooth/tester/src/bsim_btp.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,10 @@ static bool is_valid_ascs_packet_len(const struct btp_hdr *hdr, struct net_buf_s
10411041
return buf_simple->len == 0U;
10421042
case BTP_ASCS_EV_ASE_STATE_CHANGED:
10431043
return buf_simple->len == sizeof(struct btp_ascs_ase_state_changed_ev);
1044+
case BTP_ASCS_EV_CIS_CONNECTED:
1045+
return buf_simple->len == sizeof(struct btp_ascs_cis_connected_ev);
1046+
case BTP_ASCS_EV_CIS_DISCONNECTED:
1047+
return buf_simple->len == sizeof(struct btp_ascs_cis_disconnected_ev);
10441048
default:
10451049
LOG_ERR("Unhandled opcode 0x%02X", hdr->opcode);
10461050
return false;

0 commit comments

Comments
 (0)