From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> This tests setting SID for broadcast source in adition to existing test that was testing broadcast sink only, so this adds/updates the following test: ISO Broadcaster SID auto - Success ISO Broadcaster SID 0x01 - Success ISO Broadcaster Receiver SID auto - Success ISO Broadcaster Receiver SID 0x01 - Success --- emulator/bthost.c | 3 ++- emulator/bthost.h | 2 +- tools/iso-tester.c | 47 +++++++++++++++++++++++++++++++++++++++++++-- tools/mesh-tester.c | 2 +- tools/mgmt-tester.c | 4 ++-- 5 files changed, 51 insertions(+), 7 deletions(-) diff --git a/emulator/bthost.c b/emulator/bthost.c index f53b4382d6f9..7ab4533d12b4 100644 --- a/emulator/bthost.c +++ b/emulator/bthost.c @@ -3467,7 +3467,7 @@ void bthost_set_scan_enable(struct bthost *bthost, uint8_t enable) &cp, sizeof(cp)); } -void bthost_set_ext_adv_params(struct bthost *bthost) +void bthost_set_ext_adv_params(struct bthost *bthost, uint8_t sid) { const uint8_t interval_20ms[] = { 0x20, 0x00, 0x00 }; struct bt_hci_cmd_le_set_ext_adv_params cp; @@ -3477,6 +3477,7 @@ void bthost_set_ext_adv_params(struct bthost *bthost) cp.evt_properties = cpu_to_le16(0x0013); memcpy(cp.min_interval, interval_20ms, sizeof(cp.min_interval)); memcpy(cp.max_interval, interval_20ms, sizeof(cp.max_interval)); + cp.sid = sid; send_command(bthost, BT_HCI_CMD_LE_SET_EXT_ADV_PARAMS, &cp, sizeof(cp)); } diff --git a/emulator/bthost.h b/emulator/bthost.h index db640daff38a..456f631d51a0 100644 --- a/emulator/bthost.h +++ b/emulator/bthost.h @@ -113,7 +113,7 @@ void bthost_set_adv_enable(struct bthost *bthost, uint8_t enable); void bthost_set_ext_adv_data(struct bthost *bthost, const uint8_t *data, uint8_t len); -void bthost_set_ext_adv_params(struct bthost *bthost); +void bthost_set_ext_adv_params(struct bthost *bthost, uint8_t sid); void bthost_set_ext_adv_enable(struct bthost *bthost, uint8_t enable); void bthost_set_pa_params(struct bthost *bthost); void bthost_set_pa_data(struct bthost *bthost, const uint8_t *data, diff --git a/tools/iso-tester.c b/tools/iso-tester.c index 7bc0eb12c1c5..323ba6920ba3 100644 --- a/tools/iso-tester.c +++ b/tools/iso-tester.c @@ -1412,6 +1412,26 @@ static const struct iso_client_data bcast_1_1_16_2_1_send = { .base_len = sizeof(base_lc3_16_2_1), }; +static const struct iso_client_data bcast_16_2_1_send_sid = { + .qos = QOS_OUT_16_2_1, + .expect_err = 0, + .send = &send_16_2_1, + .bcast = true, + .base = base_lc3_16_2_1, + .base_len = sizeof(base_lc3_16_2_1), + .sid = 0xff, +}; + +static const struct iso_client_data bcast_16_2_1_send_sid1 = { + .qos = QOS_OUT_16_2_1, + .expect_err = 0, + .send = &send_16_2_1, + .bcast = true, + .base = base_lc3_16_2_1, + .base_len = sizeof(base_lc3_16_2_1), + .sid = 0x01, +}; + static const struct iso_client_data bcast_16_2_1_recv = { .qos = QOS_IN_16_2_1, .expect_err = 0, @@ -1439,6 +1459,16 @@ static const struct iso_client_data bcast_16_2_1_recv_sid = { .sid = 0xff, }; +static const struct iso_client_data bcast_16_2_1_recv_sid1 = { + .qos = QOS_IN_16_2_1, + .expect_err = 0, + .recv = &send_16_2_1, + .bcast = true, + .server = true, + .big = true, + .sid = 0x01, +}; + static const struct iso_client_data bcast_enc_16_2_1_recv = { .qos = QOS_IN_ENC_16_2_1, .expect_err = 0, @@ -1658,7 +1688,8 @@ static void setup_powered_callback(uint8_t status, uint16_t length, host = hciemu_client_host(client); bthost_set_cmd_complete_cb(host, client_connectable_complete, data); - bthost_set_ext_adv_params(host); + bthost_set_ext_adv_params(host, isodata->sid != 0xff ? + isodata->sid : 0x00); bthost_set_ext_adv_enable(host, 0x01); if (!isodata) @@ -2623,6 +2654,8 @@ static gboolean iso_connect(GIOChannel *io, GIOCondition cond, tester_test_failed(); return FALSE; } + + tester_print("SID: 0x%02x", addr.bc.bc_sid); } len = sizeof(sk_err); @@ -3886,14 +3919,24 @@ int main(int argc, char *argv[]) &bcast_1_1_16_2_1_send, setup_powered, test_bcast); + test_iso("ISO Broadcaster SID auto - Success", &bcast_16_2_1_send_sid, + setup_powered, + test_bcast); + test_iso("ISO Broadcaster SID 0x01 - Success", &bcast_16_2_1_send_sid1, + setup_powered, + test_bcast); test_iso("ISO Broadcaster Receiver - Success", &bcast_16_2_1_recv, setup_powered, test_bcast_recv); - test_iso("ISO Broadcaster Receiver SID 0xff - Success", + test_iso("ISO Broadcaster Receiver SID auto - Success", &bcast_16_2_1_recv_sid, setup_powered, test_bcast_recv); + test_iso("ISO Broadcaster Receiver SID 0x01 - Success", + &bcast_16_2_1_recv_sid1, + setup_powered, + test_bcast_recv); test_iso2("ISO Broadcaster Receiver2 - Success", &bcast_16_2_1_recv2, setup_powered, test_bcast_recv2); diff --git a/tools/mesh-tester.c b/tools/mesh-tester.c index d7b3b6f9b1db..848ccbe51a87 100644 --- a/tools/mesh-tester.c +++ b/tools/mesh-tester.c @@ -968,7 +968,7 @@ static void setup_bthost(void) if (data->hciemu_type == HCIEMU_TYPE_LE || test->client_enable_adv) { if (data->hciemu_type >= HCIEMU_TYPE_BREDRLE50) { - bthost_set_ext_adv_params(bthost); + bthost_set_ext_adv_params(bthost, 0x00); bthost_set_ext_adv_enable(bthost, 0x01); } else bthost_set_adv_enable(bthost, 0x01); diff --git a/tools/mgmt-tester.c b/tools/mgmt-tester.c index 030827cd51d1..a1d48152f23b 100644 --- a/tools/mgmt-tester.c +++ b/tools/mgmt-tester.c @@ -6169,7 +6169,7 @@ static void setup_bthost(void) if (data->hciemu_type == HCIEMU_TYPE_LE || test->client_enable_adv) { if (data->hciemu_type >= HCIEMU_TYPE_BREDRLE50) { - bthost_set_ext_adv_params(bthost); + bthost_set_ext_adv_params(bthost, 0x00); bthost_set_ext_adv_enable(bthost, 0x01); } else bthost_set_adv_enable(bthost, 0x01); @@ -11724,7 +11724,7 @@ static void trigger_device_found(void *user_data) bthost_set_adv_enable(bthost, 0x01); } else if (data->hciemu_type >= HCIEMU_TYPE_BREDRLE50) { - bthost_set_ext_adv_params(bthost); + bthost_set_ext_adv_params(bthost, 0x00); if (test->set_adv) bthost_set_ext_adv_data(bthost, test->adv_data, test->adv_data_len); -- 2.49.0