Diff between 41340a74bf83b16304cf6ed388bf6341f41c7ed1 and 25eaeeb7e1bc9a35091a1bb21c0fb20581fcbe8a

Changed Files

File Additions Deletions Status
unit/test-bap.c +70 -15 modified

Full Patch

diff --git a/unit/test-bap.c b/unit/test-bap.c
index 061c7a1..38a9f5c 100644
--- a/unit/test-bap.c
+++ b/unit/test-bap.c
@@ -43,6 +43,7 @@ struct test_config {
 	bool vs;
 	uint8_t state;
 	bt_bap_state_func_t state_func;
+	uint8_t num_str;
 };
 
 struct test_data {
@@ -580,32 +581,35 @@ static void bsnk_pac_added(struct bt_bap_pac *pac, void *user_data)
 	struct iovec *cc;
 	struct bt_bap_codec codec = {0};
 	struct bt_bap_stream *stream;
+	uint8_t bis_idx = 1;
+
+	bt_bap_pac_set_ops(pac, &bcast_pac_ops, NULL);
 
 	if (data->cfg->vs)
 		codec.id = 0xff;
 	else
 		codec.id = LC3_ID;
 
-	bt_bap_verify_bis(data->bap, 1, &codec,
-			&data->cfg->cc, NULL, &lpac, &cc);
+	for (uint8_t i = 0; i < data->cfg->num_str; i++) {
+		bt_bap_verify_bis(data->bap, bis_idx++, &codec,
+				&data->cfg->cc, NULL, &lpac, &cc);
 
-	g_assert(lpac);
-	g_assert(pac == lpac);
-	g_assert(cc);
-
-	bt_bap_pac_set_ops(pac, &bcast_pac_ops, NULL);
+		g_assert(lpac);
+		g_assert(pac == lpac);
+		g_assert(cc);
 
-	stream = bt_bap_stream_new(data->bap,
-		pac, NULL, &data->cfg->qos, cc);
+		stream = bt_bap_stream_new(data->bap,
+			pac, NULL, &data->cfg->qos, cc);
 
-	g_assert(stream);
+		g_assert(stream);
 
-	queue_push_tail(data->streams, stream);
+		queue_push_tail(data->streams, stream);
 
-	bt_bap_stream_config(stream, &data->cfg->qos,
-			cc, NULL, NULL);
+		bt_bap_stream_config(stream, &data->cfg->qos,
+				cc, NULL, NULL);
 
-	util_iov_free(cc, 1);
+		util_iov_free(cc, 1);
+	}
 }
 
 static void bsnk_state(struct bt_bap_stream *stream, uint8_t old_state,
@@ -6138,6 +6142,7 @@ static struct test_config cfg_bsnk_8_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_8_2 = {
@@ -6145,6 +6150,7 @@ static struct test_config cfg_bsnk_8_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_16_1 = {
@@ -6152,6 +6158,7 @@ static struct test_config cfg_bsnk_16_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_16_2 = {
@@ -6159,6 +6166,7 @@ static struct test_config cfg_bsnk_16_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_24_1 = {
@@ -6166,6 +6174,7 @@ static struct test_config cfg_bsnk_24_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_24_2 = {
@@ -6173,6 +6182,7 @@ static struct test_config cfg_bsnk_24_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_32_1 = {
@@ -6180,6 +6190,7 @@ static struct test_config cfg_bsnk_32_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_32_2 = {
@@ -6187,6 +6198,7 @@ static struct test_config cfg_bsnk_32_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_44_1 = {
@@ -6194,6 +6206,7 @@ static struct test_config cfg_bsnk_44_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_44_2 = {
@@ -6201,6 +6214,7 @@ static struct test_config cfg_bsnk_44_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_1 = {
@@ -6208,6 +6222,7 @@ static struct test_config cfg_bsnk_48_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_2 = {
@@ -6215,6 +6230,7 @@ static struct test_config cfg_bsnk_48_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_3 = {
@@ -6222,6 +6238,7 @@ static struct test_config cfg_bsnk_48_3 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_4 = {
@@ -6229,6 +6246,7 @@ static struct test_config cfg_bsnk_48_4 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_5 = {
@@ -6236,6 +6254,7 @@ static struct test_config cfg_bsnk_48_5 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_48_6 = {
@@ -6243,6 +6262,7 @@ static struct test_config cfg_bsnk_48_6 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_vs = {
@@ -6251,6 +6271,7 @@ static struct test_config cfg_bsnk_vs = {
 	.snk = true,
 	.vs = true,
 	.state_func = bsnk_state,
+	.num_str = 1,
 };
 
 static void test_bsnk_scc(void)
@@ -6355,11 +6376,21 @@ static void test_bsnk_scc(void)
 		NULL, test_bcast, &cfg_bsnk_vs, IOV_NULL);
 }
 
+static void stream_count_streaming(void *data, void *user_data)
+{
+	struct bt_bap_stream *stream = data;
+	uint8_t *num = user_data;
+
+	if (bt_bap_stream_get_state(stream) == BT_BAP_STREAM_STATE_STREAMING)
+		(*num)++;
+}
+
 static void bsnk_state_str(struct bt_bap_stream *stream, uint8_t old_state,
 				uint8_t new_state, void *user_data)
 {
 	struct test_data *data = user_data;
 	struct iovec *cc;
+	uint8_t num = 0;
 
 	switch (new_state) {
 	case BT_BAP_STREAM_STATE_CONFIG:
@@ -6384,7 +6415,14 @@ static void bsnk_state_str(struct bt_bap_stream *stream, uint8_t old_state,
 
 		break;
 	case BT_BAP_STREAM_STATE_STREAMING:
-		tester_test_passed();
+		queue_foreach(data->streams, stream_count_streaming, &num);
+
+		if (num == data->cfg->num_str)
+			/* Test is completed after all streams have transitioned
+			 * to STREAMING state.
+			 */
+			tester_test_passed();
+
 		break;
 	}
 }
@@ -6394,6 +6432,7 @@ static struct test_config cfg_bsnk_str_8_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_8_2 = {
@@ -6401,6 +6440,7 @@ static struct test_config cfg_bsnk_str_8_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_16_1 = {
@@ -6408,6 +6448,7 @@ static struct test_config cfg_bsnk_str_16_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_16_2 = {
@@ -6415,6 +6456,7 @@ static struct test_config cfg_bsnk_str_16_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_24_1 = {
@@ -6422,6 +6464,7 @@ static struct test_config cfg_bsnk_str_24_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_24_2 = {
@@ -6429,6 +6472,7 @@ static struct test_config cfg_bsnk_str_24_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_32_1 = {
@@ -6436,6 +6480,7 @@ static struct test_config cfg_bsnk_str_32_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_32_2 = {
@@ -6443,6 +6488,7 @@ static struct test_config cfg_bsnk_str_32_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_44_1 = {
@@ -6450,6 +6496,7 @@ static struct test_config cfg_bsnk_str_44_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_44_2 = {
@@ -6457,6 +6504,7 @@ static struct test_config cfg_bsnk_str_44_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_1 = {
@@ -6464,6 +6512,7 @@ static struct test_config cfg_bsnk_str_48_1 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_2 = {
@@ -6471,6 +6520,7 @@ static struct test_config cfg_bsnk_str_48_2 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_3 = {
@@ -6478,6 +6528,7 @@ static struct test_config cfg_bsnk_str_48_3 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_4 = {
@@ -6485,6 +6536,7 @@ static struct test_config cfg_bsnk_str_48_4 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_5 = {
@@ -6492,6 +6544,7 @@ static struct test_config cfg_bsnk_str_48_5 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_48_6 = {
@@ -6499,6 +6552,7 @@ static struct test_config cfg_bsnk_str_48_6 = {
 	.qos = QOS_BCAST,
 	.snk = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static struct test_config cfg_bsnk_str_vs = {
@@ -6507,6 +6561,7 @@ static struct test_config cfg_bsnk_str_vs = {
 	.snk = true,
 	.vs = true,
 	.state_func = bsnk_state_str,
+	.num_str = 1,
 };
 
 static void test_bsnk_str(void)