Skip to content

Commit f7fa40f

Browse files
committed
tests: Bluetooth: ISO: Add validation of sync receiver info
Add validation of the info the application can retrieve by calling bt_iso_chan_get_info. Signed-off-by: Emil Gydesen <[email protected]>
1 parent 8a824f3 commit f7fa40f

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

include/zephyr/bluetooth/hci_types.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3348,6 +3348,13 @@ struct bt_hci_evt_le_cis_req {
33483348
uint8_t cis_id;
33493349
} __packed;
33503350

3351+
#define BT_HCI_LE_BIG_HANDLE_MIN 0x00U
3352+
#define BT_HCI_LE_BIG_HANDLE_MAX 0xEFU
3353+
#define BT_HCI_LE_BIG_SYNC_DELAY_MIN 0x000030U
3354+
#define BT_HCI_LE_BIG_SYNC_DELAY_MAX 0x7FFFFFU
3355+
#define BT_HCI_LE_TRANSPORT_LATENCY_BIG_MIN 0x000030U
3356+
#define BT_HCI_LE_TRANSPORT_LATENCY_BIG_MAX 0x7FFFFFU
3357+
33513358
#define BT_HCI_EVT_LE_BIG_COMPLETE 0x1b
33523359
struct bt_hci_evt_le_big_complete {
33533360
uint8_t status;

tests/bsim/bluetooth/host/iso/bis/src/bis_receiver.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
#include "common.h"
88

99
#include <zephyr/bluetooth/bluetooth.h>
10+
#include <zephyr/bluetooth/hci_types.h>
1011
#include <zephyr/bluetooth/iso.h>
1112
#include <zephyr/logging/log.h>
13+
#include <zephyr/sys/util.h>
1214

1315
#include "babblekit/flags.h"
1416
#include "babblekit/sync.h"
@@ -241,6 +243,36 @@ static void sync_big(struct bt_le_per_adv_sync *sync, uint8_t cnt, struct bt_iso
241243
TEST_ASSERT(err == 0, "Failed to create BIG sync: %d");
242244

243245
WAIT_FOR_FLAG(flag_iso_connected);
246+
247+
for (size_t i = 0; i < cnt; i++) {
248+
struct bt_iso_info info;
249+
250+
err = bt_iso_chan_get_info(bis_channels[i], &info);
251+
TEST_ASSERT(err == 0, "Failed to get BIS info: %d", err);
252+
253+
TEST_ASSERT(info.can_recv);
254+
TEST_ASSERT(!info.can_send);
255+
TEST_ASSERT(info.type == BT_ISO_CHAN_TYPE_SYNC_RECEIVER);
256+
TEST_ASSERT(IN_RANGE(info.iso_interval, BT_ISO_ISO_INTERVAL_MIN,
257+
BT_ISO_ISO_INTERVAL_MAX),
258+
"Invalid ISO interval 0x%04x", info.iso_interval);
259+
TEST_ASSERT(IN_RANGE(info.max_subevent, BT_ISO_NSE_MIN, BT_ISO_NSE_MAX),
260+
"Invalid subevent number 0x%02x", info.max_subevent);
261+
TEST_ASSERT(IN_RANGE(info.sync_receiver.latency,
262+
BT_HCI_LE_TRANSPORT_LATENCY_BIG_MIN,
263+
BT_HCI_LE_TRANSPORT_LATENCY_BIG_MAX),
264+
"Invalid transport latency 0x%06x", info.sync_receiver.latency);
265+
TEST_ASSERT((info.sync_receiver.pto % info.iso_interval) == 0U,
266+
"PTO in ms %u shall be a multiple of the ISO interval %u",
267+
info.sync_receiver.pto, info.iso_interval);
268+
TEST_ASSERT(IN_RANGE((info.sync_receiver.pto / info.iso_interval), BT_ISO_PTO_MIN,
269+
BT_ISO_PTO_MAX),
270+
"Invalid PTO 0x%x", (info.sync_receiver.pto / info.iso_interval));
271+
TEST_ASSERT(IN_RANGE(info.sync_receiver.bn, BT_ISO_BN_MIN, BT_ISO_BN_MAX),
272+
"Invalid BN 0x%02x", info.sync_receiver.bn);
273+
TEST_ASSERT(IN_RANGE(info.sync_receiver.irc, BT_ISO_IRC_MIN, BT_ISO_IRC_MAX),
274+
"Invalid IRC 0x%02x", info.sync_receiver.irc);
275+
}
244276
}
245277

246278
static void test_main(void)

0 commit comments

Comments
 (0)