Skip to content

Commit 9e25668

Browse files
Thalleycarlescufi
authored andcommitted
Bluetooth: Audio: Fix syncing to multiple BIS for broadcast sink shell
Fixed an issue with syncing to multiple BIS as the broadcast sink in the shell. Also changed a check in the broadcast sink implementation from an assert to a `if` to provide a better way of handling bad input. Signed-off-by: Emil Gydesen <[email protected]>
1 parent ec0ec72 commit 9e25668

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

subsys/bluetooth/audio/broadcast_sink.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,10 @@ int bt_audio_broadcast_sink_sync(struct bt_audio_broadcast_sink *sink,
10441044
if ((indexes_bitfield & BIT(i)) != 0) {
10451045
struct bt_codec *codec = codec_from_base_by_index(&sink->base, i);
10461046

1047-
__ASSERT(codec != NULL, "Codec[%d] was NULL", i);
1047+
if (codec == NULL) {
1048+
BT_DBG("Index %d not found in BASE", i);
1049+
return -EINVAL;
1050+
}
10481051

10491052
codecs[stream_count++] = codec;
10501053

subsys/bluetooth/shell/audio.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,7 +1331,7 @@ static int cmd_sync_broadcast(const struct shell *sh, size_t argc, char *argv[])
13311331

13321332
bis_bitfield = 0;
13331333
for (int i = 1; i < argc; i++) {
1334-
unsigned long val = strtoul(argv[1], NULL, 16);
1334+
unsigned long val = strtoul(argv[i], NULL, 16);
13351335

13361336
if (val < 0x01 || val > 0x1F) {
13371337
shell_error(sh, "Invalid index: %ld", val);
@@ -1597,8 +1597,10 @@ SHELL_STATIC_SUBCMD_SET_CREATE(audio_cmds,
15971597
cmd_broadcast_scan, 2, 0),
15981598
SHELL_CMD_ARG(accept_broadcast, NULL, "0x<broadcast_id>",
15991599
cmd_accept_broadcast, 2, 0),
1600-
SHELL_CMD_ARG(sync_broadcast, NULL, "0x<bis_bitfield>",
1601-
cmd_sync_broadcast, 2, 0),
1600+
SHELL_CMD_ARG(sync_broadcast, NULL,
1601+
"0x<bis_index> [[[0x<bis_index>] 0x<bis_index>] ...]",
1602+
cmd_sync_broadcast, 2,
1603+
ARRAY_SIZE(broadcast_sink_streams) - 1),
16021604
SHELL_CMD_ARG(stop_broadcast_sink, NULL, "Stops broadcast sink",
16031605
cmd_stop_broadcast_sink, 1, 0),
16041606
SHELL_CMD_ARG(term_broadcast_sink, NULL, "",

tests/bluetooth/shell/audio.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ CONFIG_BT_ASCS_ASE_SRC_COUNT=2
4343
CONFIG_BT_ISO_MAX_CHAN=4
4444
CONFIG_BT_AUDIO_UNICAST_CLIENT=y
4545
CONFIG_BT_AUDIO_BROADCAST_SOURCE=y
46+
CONFIG_BT_AUDIO_BROADCAST_SRC_STREAM_COUNT=4
4647
CONFIG_BT_AUDIO_BROADCAST_SINK=y
48+
CONFIG_BT_AUDIO_BROADCAST_SNK_STREAM_COUNT=4
4749
CONFIG_BT_ISO_TX_BUF_COUNT=5
4850
CONFIG_BT_VOCS_MAX_INSTANCE_COUNT=1
4951
CONFIG_BT_VOCS_CLIENT_MAX_INSTANCE_COUNT=1

0 commit comments

Comments
 (0)