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
bool vs;
uint8_t state;
bt_bap_state_func_t state_func;
+ uint8_t num_str;
};
struct test_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,
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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 = {
.snk = true,
.vs = true,
.state_func = bsnk_state,
+ .num_str = 1,
};
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:
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;
}
}
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.qos = QOS_BCAST,
.snk = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
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 = {
.snk = true,
.vs = true,
.state_func = bsnk_state_str,
+ .num_str = 1,
};
static void test_bsnk_str(void)