Skip to content

Commit 68751b8

Browse files
Thalleyfabiobaltieri
authored andcommitted
tests: Bluetooth: Audio: Add testing of source stream
Expand the CAP tests to also discover and setup a source stream, so that the CAP procedures are run on multiple streams. Signed-off-by: Emil Gydesen <[email protected]>
1 parent 59153af commit 68751b8

File tree

1 file changed

+45
-19
lines changed

1 file changed

+45
-19
lines changed

tests/bsim/bluetooth/audio/src/cap_initiator_unicast_test.c

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ extern enum bst_result_t bst_result;
5454
static struct bt_bap_lc3_preset unicast_preset_16_2_1 = BT_BAP_LC3_UNICAST_PRESET_16_2_1(
5555
BT_AUDIO_LOCATION_FRONT_LEFT, BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
5656

57-
static struct bt_cap_stream unicast_client_streams[CONFIG_BT_BAP_UNICAST_CLIENT_ASE_SNK_COUNT];
57+
static struct bt_cap_stream unicast_client_sink_streams[CONFIG_BT_BAP_UNICAST_CLIENT_ASE_SNK_COUNT];
58+
static struct bt_cap_stream
59+
unicast_client_source_streams[CONFIG_BT_BAP_UNICAST_CLIENT_ASE_SRC_COUNT];
5860
static struct bt_bap_ep
5961
*unicast_sink_eps[CONFIG_BT_MAX_CONN][CONFIG_BT_BAP_UNICAST_CLIENT_ASE_SNK_COUNT];
6062
static struct bt_bap_ep
@@ -351,8 +353,12 @@ static void init(void)
351353
return;
352354
}
353355

354-
for (size_t i = 0; i < ARRAY_SIZE(unicast_client_streams); i++) {
355-
bt_cap_stream_ops_register(&unicast_client_streams[i], &unicast_stream_ops);
356+
for (size_t i = 0; i < ARRAY_SIZE(unicast_client_sink_streams); i++) {
357+
bt_cap_stream_ops_register(&unicast_client_sink_streams[i], &unicast_stream_ops);
358+
}
359+
360+
for (size_t i = 0; i < ARRAY_SIZE(unicast_client_source_streams); i++) {
361+
bt_cap_stream_ops_register(&unicast_client_source_streams[i], &unicast_stream_ops);
356362
}
357363
}
358364

@@ -506,15 +512,18 @@ static void discover_cas(struct bt_conn *conn)
506512

507513
static void unicast_group_create(struct bt_bap_unicast_group **out_unicast_group)
508514
{
509-
struct bt_bap_unicast_group_stream_param group_stream_params;
515+
struct bt_bap_unicast_group_stream_param group_source_stream_params;
516+
struct bt_bap_unicast_group_stream_param group_sink_stream_params;
510517
struct bt_bap_unicast_group_stream_pair_param pair_params;
511518
struct bt_bap_unicast_group_param group_param;
512519
int err;
513520

514-
group_stream_params.qos = &unicast_preset_16_2_1.qos;
515-
group_stream_params.stream = &unicast_client_streams[0].bap_stream;
516-
pair_params.tx_param = &group_stream_params;
517-
pair_params.rx_param = NULL;
521+
group_sink_stream_params.qos = &unicast_preset_16_2_1.qos;
522+
group_sink_stream_params.stream = &unicast_client_sink_streams[0].bap_stream;
523+
group_source_stream_params.qos = &unicast_preset_16_2_1.qos;
524+
group_source_stream_params.stream = &unicast_client_source_streams[0].bap_stream;
525+
pair_params.tx_param = &group_sink_stream_params;
526+
pair_params.rx_param = &group_source_stream_params;
518527

519528
group_param.packing = BT_ISO_PACKING_SEQUENTIAL;
520529
group_param.params_count = 1;
@@ -542,7 +551,7 @@ static void unicast_audio_start_inval(struct bt_bap_unicast_group *unicast_group
542551
valid_start_param.stream_params = &valid_stream_param;
543552

544553
valid_stream_param.member.member = default_conn;
545-
valid_stream_param.stream = &unicast_client_streams[0];
554+
valid_stream_param.stream = &unicast_client_sink_streams[0];
546555
valid_stream_param.ep = unicast_sink_eps[bt_conn_index(default_conn)][0];
547556
valid_stream_param.codec_cfg = &unicast_preset_16_2_1.codec_cfg;
548557

@@ -639,18 +648,24 @@ static void unicast_audio_start_inval(struct bt_bap_unicast_group *unicast_group
639648

640649
static void unicast_audio_start(struct bt_bap_unicast_group *unicast_group, bool wait)
641650
{
642-
struct bt_cap_unicast_audio_start_stream_param stream_param[1];
651+
struct bt_cap_unicast_audio_start_stream_param stream_param[2];
643652
struct bt_cap_unicast_audio_start_param param;
644653
int err;
645654

646655
param.type = BT_CAP_SET_TYPE_AD_HOC;
647-
param.count = 1u;
656+
param.count = ARRAY_SIZE(stream_param);
648657
param.stream_params = stream_param;
649658
stream_param[0].member.member = default_conn;
650-
stream_param[0].stream = &unicast_client_streams[0];
659+
stream_param[0].stream = &unicast_client_sink_streams[0];
651660
stream_param[0].ep = unicast_sink_eps[bt_conn_index(default_conn)][0];
652661
stream_param[0].codec_cfg = &unicast_preset_16_2_1.codec_cfg;
653662

663+
stream_param[1].member.member = default_conn;
664+
stream_param[1].stream = &unicast_client_source_streams[0];
665+
stream_param[1].ep = unicast_source_eps[bt_conn_index(default_conn)][0];
666+
stream_param[1].codec_cfg = &unicast_preset_16_2_1.codec_cfg;
667+
stream_param[1].qos = &unicast_preset_16_2_1.qos;
668+
654669
UNSET_FLAG(flag_started);
655670

656671
err = bt_cap_initiator_unicast_audio_start(&param, unicast_group);
@@ -671,7 +686,7 @@ static void unicast_audio_update_inval(void)
671686
struct bt_cap_unicast_audio_update_param param;
672687
int err;
673688

674-
param.stream = &unicast_client_streams[0];
689+
param.stream = &unicast_client_sink_streams[0];
675690
param.meta = unicast_preset_16_2_1.codec_cfg.meta;
676691
param.meta_len = unicast_preset_16_2_1.codec_cfg.meta_len;
677692

@@ -701,16 +716,20 @@ static void unicast_audio_update_inval(void)
701716

702717
static void unicast_audio_update(void)
703718
{
704-
struct bt_cap_unicast_audio_update_param param;
719+
struct bt_cap_unicast_audio_update_param param[2];
705720
int err;
706721

707-
param.stream = &unicast_client_streams[0];
708-
param.meta = unicast_preset_16_2_1.codec_cfg.meta;
709-
param.meta_len = unicast_preset_16_2_1.codec_cfg.meta_len;
722+
param[0].stream = &unicast_client_sink_streams[0];
723+
param[0].meta = unicast_preset_16_2_1.codec_cfg.meta;
724+
param[0].meta_len = unicast_preset_16_2_1.codec_cfg.meta_len;
725+
726+
param[1].stream = &unicast_client_source_streams[0];
727+
param[1].meta = unicast_preset_16_2_1.codec_cfg.meta;
728+
param[1].meta_len = unicast_preset_16_2_1.codec_cfg.meta_len;
710729

711730
UNSET_FLAG(flag_updated);
712731

713-
err = bt_cap_initiator_unicast_audio_update(&param, 1);
732+
err = bt_cap_initiator_unicast_audio_update(param, ARRAY_SIZE(param));
714733
if (err != 0) {
715734
FAIL("Failed to update unicast audio: %d\n", err);
716735
return;
@@ -808,6 +827,7 @@ static void test_main_cap_initiator_unicast(void)
808827
discover_cas(default_conn);
809828

810829
discover_sink(default_conn);
830+
discover_source(default_conn);
811831

812832
for (size_t i = 0U; i < iterations; i++) {
813833
unicast_group_create(&unicast_group);
@@ -841,6 +861,7 @@ static void test_main_cap_initiator_unicast_inval(void)
841861
discover_cas(default_conn);
842862

843863
discover_sink(default_conn);
864+
discover_source(default_conn);
844865

845866
unicast_group_create(&unicast_group);
846867

@@ -875,6 +896,7 @@ static void test_cap_initiator_unicast_timeout(void)
875896
discover_cas(default_conn);
876897

877898
discover_sink(default_conn);
899+
discover_source(default_conn);
878900

879901
unicast_group_create(&unicast_group);
880902

@@ -1009,10 +1031,14 @@ static int set_chan_alloc(enum bt_audio_location loc, struct bt_audio_codec_cfg
10091031

10101032
return 0;
10111033
}
1034+
1035+
/* Since we are incrementing i by the value_len, we don't need to increment it
1036+
* further in the `for` statement
1037+
*/
10121038
i += value_len;
10131039
}
10141040

1015-
return -ENODATA;
1041+
return -ENOENT;
10161042
}
10171043

10181044
static int cap_initiator_ac_cap_unicast_start(const struct cap_initiator_ac_param *param,

0 commit comments

Comments
 (0)