Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 41 additions & 23 deletions samples/bluetooth/iso_broadcast_benchmark/src/broadcaster.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <zephyr/console/console.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/iso.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/byteorder.h>

#include <zephyr/logging/log.h>
Expand Down Expand Up @@ -86,7 +87,7 @@ static void iso_disconnected(struct bt_iso_chan *chan, uint8_t reason)
chan, reason);

connected_bis--;
if (connected_bis == big_create_param.num_bis) {
if (connected_bis == 0) {
k_sem_give(&sem_big_term);
}
}
Expand Down Expand Up @@ -681,7 +682,7 @@ static int create_big(struct bt_le_ext_adv **adv, struct bt_iso_big **big)
err = bt_le_ext_adv_set_data(*adv, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
LOG_ERR("Failed to set advertising data (err %d)", err);
return 0;
return err;
}

LOG_INF("Setting Periodic Advertising parameters");
Expand Down Expand Up @@ -739,32 +740,41 @@ static int delete_big(struct bt_le_ext_adv **adv, struct bt_iso_big **big)
{
int err;

err = bt_iso_big_terminate(*big);
if (err != 0) {
LOG_ERR("Failed to terminate BIG (err %d)", err);
return err;
if (*big != NULL) {
err = bt_iso_big_terminate(*big);
if (err != 0) {
LOG_ERR("Failed to terminate BIG (err %d)", err);
return err;
}
err = k_sem_take(&sem_big_term, K_FOREVER);
if (err != 0) {
LOG_ERR("failed to take sem_big_term (err %d)", err);
return err;
}
*big = NULL;
}
*big = NULL;

err = bt_le_per_adv_stop(*adv);
if (err != 0) {
LOG_ERR("Failed to stop periodic advertising (err %d)", err);
return err;
}
if (*adv != NULL) {
err = bt_le_per_adv_stop(*adv);
if (err != 0) {
LOG_ERR("Failed to stop periodic advertising (err %d)", err);
return err;
}

err = bt_le_ext_adv_stop(*adv);
if (err != 0) {
LOG_ERR("Failed to stop advertising (err %d)", err);
return err;
}
err = bt_le_ext_adv_stop(*adv);
if (err != 0) {
LOG_ERR("Failed to stop advertising (err %d)", err);
return err;
}

err = bt_le_ext_adv_delete(*adv);
if (err != 0) {
LOG_ERR("Failed to delete advertiser (err %d)", err);
return err;
}
err = bt_le_ext_adv_delete(*adv);
if (err != 0) {
LOG_ERR("Failed to delete advertiser (err %d)", err);
return err;
}

*adv = NULL;
*adv = NULL;
}

return 0;
}
Expand Down Expand Up @@ -810,7 +820,15 @@ int test_run_broadcaster(void)

err = create_big(&adv, &big);
if (err) {
int del_err;

LOG_ERR("Could not create BIG: %d", err);

del_err = delete_big(&adv, &big);
if (del_err) {
LOG_ERR("Could not delete BIG: %d", del_err);
}

return err;
}

Expand Down
Loading