|
4 | 4 | * SPDX-License-Identifier: Apache-2.0
|
5 | 5 | */
|
6 | 6 | #include <zephyr/bluetooth/bluetooth.h>
|
| 7 | +#include <zephyr/bluetooth/gap.h> |
| 8 | +#include <zephyr/bluetooth/hci_types.h> |
7 | 9 | #include <zephyr/bluetooth/iso.h>
|
8 | 10 | #include <zephyr/logging/log.h>
|
| 11 | +#include <zephyr/sys/util.h> |
9 | 12 |
|
10 | 13 | #include "babblekit/flags.h"
|
11 | 14 | #include "babblekit/sync.h"
|
@@ -86,8 +89,46 @@ static void send_data_cb(struct k_work *work)
|
86 | 89 |
|
87 | 90 | static void iso_connected_cb(struct bt_iso_chan *chan)
|
88 | 91 | {
|
| 92 | + struct bt_iso_info info; |
| 93 | + int err; |
| 94 | + |
89 | 95 | LOG_INF("ISO Channel %p connected", chan);
|
90 | 96 |
|
| 97 | + err = bt_iso_chan_get_info(chan, &info); |
| 98 | + TEST_ASSERT(err == 0, "Failed to get BIS info: %d", err); |
| 99 | + |
| 100 | + TEST_ASSERT(!info.can_recv); |
| 101 | + TEST_ASSERT(info.can_send); |
| 102 | + TEST_ASSERT(info.type == BT_ISO_CHAN_TYPE_BROADCASTER); |
| 103 | + TEST_ASSERT((BT_GAP_ISO_INTERVAL_TO_US(info.iso_interval) % SDU_INTERVAL_US) == 0U, |
| 104 | + "ISO interval %u (%u) shall be a multiple of the SDU interval %u", |
| 105 | + BT_GAP_ISO_INTERVAL_TO_US(info.iso_interval), info.iso_interval, |
| 106 | + SDU_INTERVAL_US); |
| 107 | + TEST_ASSERT(IN_RANGE(info.iso_interval, BT_ISO_ISO_INTERVAL_MIN, BT_ISO_ISO_INTERVAL_MAX), |
| 108 | + "Invalid ISO interval 0x%04x", info.iso_interval); |
| 109 | + TEST_ASSERT(IN_RANGE(info.max_subevent, BT_ISO_NSE_MIN, BT_ISO_NSE_MAX), |
| 110 | + "Invalid subevent number 0x%02x", info.max_subevent); |
| 111 | + TEST_ASSERT(IN_RANGE(info.broadcaster.sync_delay, BT_HCI_LE_BIG_SYNC_DELAY_MIN, |
| 112 | + BT_HCI_LE_BIG_SYNC_DELAY_MAX), |
| 113 | + "Invalid sync delay 0x%06x", info.broadcaster.sync_delay); |
| 114 | + TEST_ASSERT(IN_RANGE(info.broadcaster.latency, BT_HCI_LE_TRANSPORT_LATENCY_BIG_MIN, |
| 115 | + BT_HCI_LE_TRANSPORT_LATENCY_BIG_MAX), |
| 116 | + "Invalid transport latency 0x%06x", info.broadcaster.latency); |
| 117 | + TEST_ASSERT((info.broadcaster.pto % info.iso_interval) == 0U, |
| 118 | + "PTO in ms %u shall be a multiple of the ISO interval %u", info.broadcaster.pto, |
| 119 | + info.iso_interval); |
| 120 | + TEST_ASSERT(IN_RANGE((info.broadcaster.pto / info.iso_interval), BT_ISO_PTO_MIN, |
| 121 | + BT_ISO_PTO_MAX), |
| 122 | + "Invalid PTO 0x%x", (info.broadcaster.pto / info.iso_interval)); |
| 123 | + TEST_ASSERT(info.broadcaster.phy == BT_GAP_LE_PHY_1M || |
| 124 | + info.broadcaster.phy == BT_GAP_LE_PHY_2M || |
| 125 | + info.broadcaster.phy == BT_GAP_LE_PHY_CODED, |
| 126 | + "Invalid PHY 0x%02x", info.broadcaster.phy); |
| 127 | + TEST_ASSERT(IN_RANGE(info.broadcaster.bn, BT_ISO_BN_MIN, BT_ISO_BN_MAX), |
| 128 | + "Invalid BN 0x%02x", info.broadcaster.bn); |
| 129 | + TEST_ASSERT(IN_RANGE(info.broadcaster.irc, BT_ISO_IRC_MIN, BT_ISO_IRC_MAX), |
| 130 | + "Invalid IRC 0x%02x", info.broadcaster.irc); |
| 131 | + |
91 | 132 | if (chan == default_chan) {
|
92 | 133 | seq_num = 0U;
|
93 | 134 |
|
|
0 commit comments