Commit e0a262b3 authored by Lars Knudsen's avatar Lars Knudsen Committed by Henrik Brix Andersen
Browse files

Bluetooth: Audio: Fix initial Broadcast source values



If the Broadcast ID is initially set to 0x000000,
which is valid, comparison logic on add of an
actual Broadcast ID of 0x000000 fails.

Likewise for SID.

Moving INVALID_BROADCAST_ID define to bap.h

Signed-off-by: default avatarLars Knudsen <LAKD@demant.com>
parent edb47444
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@
extern "C" {
#endif

/** An invalid Broadcast ID */
#define BT_BAP_INVALID_BROADCAST_ID 0xFFFFFFFFU

/**
 * @brief Check if a BAP BASS BIS_Sync bitfield is valid
 *
+3 −4
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@
#define PA_SYNC_SKIP         5
#define PA_SYNC_INTERVAL_TO_TIMEOUT_RATIO 20 /* Set the timeout relative to interval */
/* Broadcast IDs are 24bit, so this is out of valid range */
#define INVALID_BROADCAST_ID 0xFFFFFFFFU

static void scan_for_broadcast_sink(void);

@@ -297,7 +296,7 @@ static void scan_recv_cb(const struct bt_le_scan_recv_info *info,
	if (scanning_for_broadcast_source) {
		/* Scan for and select Broadcast Source */

		sr_info.broadcast_id = INVALID_BROADCAST_ID;
		sr_info.broadcast_id = BT_BAP_INVALID_BROADCAST_ID;

		/* We are only interested in non-connectable periodic advertisers */
		if ((info->adv_props & BT_GAP_ADV_PROP_CONNECTABLE) != 0 ||
@@ -307,7 +306,7 @@ static void scan_recv_cb(const struct bt_le_scan_recv_info *info,

		bt_data_parse(ad, device_found, (void *)&sr_info);

		if (sr_info.broadcast_id != INVALID_BROADCAST_ID) {
		if (sr_info.broadcast_id != BT_BAP_INVALID_BROADCAST_ID) {
			printk("Broadcast Source Found:\n");
			printk("  BT Name:        %s\n", sr_info.bt_name);
			printk("  Broadcast Name: %s\n", sr_info.broadcast_name);
@@ -545,7 +544,7 @@ static void reset(void)
	printk("\n\nReset...\n\n");

	broadcast_sink_conn = NULL;
	selected_broadcast_id = INVALID_BROADCAST_ID;
	selected_broadcast_id = BT_BAP_INVALID_BROADCAST_ID;
	selected_sid = 0;
	selected_pa_interval = 0;
	(void)memset(&selected_addr, 0, sizeof(selected_addr));
+1 −2
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ BUILD_ASSERT(IS_ENABLED(CONFIG_SCAN_SELF) || IS_ENABLED(CONFIG_SCAN_OFFLOAD),
#define ADV_TIMEOUT K_FOREVER
#endif /* CONFIG_SCAN_SELF */

#define INVALID_BROADCAST_ID        (BT_AUDIO_BROADCAST_ID_MAX + 1)
#define PA_SYNC_INTERVAL_TO_TIMEOUT_RATIO 5 /* Set the timeout relative to interval */
#define PA_SYNC_SKIP                5
#define NAME_LEN                    sizeof(CONFIG_TARGET_BROADCAST_NAME) + 1
@@ -1361,7 +1360,7 @@ static int reset(void)
	(void)memset(sink_broadcast_code, 0, sizeof(sink_broadcast_code));
	(void)memset(&broadcaster_info, 0, sizeof(broadcaster_info));
	(void)memset(&broadcaster_addr, 0, sizeof(broadcaster_addr));
	broadcaster_broadcast_id = INVALID_BROADCAST_ID;
	broadcaster_broadcast_id = BT_BAP_INVALID_BROADCAST_ID;

	if (broadcast_sink != NULL) {
		err = bt_bap_broadcast_sink_delete(broadcast_sink);
+3 −4
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@
#define SEM_TIMEOUT K_SECONDS(10)
#define PA_SYNC_SKIP         5
#define PA_SYNC_INTERVAL_TO_TIMEOUT_RATIO 20 /* Set the timeout relative to interval */
#define INVALID_BROADCAST_ID 0xFFFFFFFF

static bool pbs_found;

@@ -203,7 +202,7 @@ static bool scan_check_and_sync_broadcast(struct bt_data *data, void *user_data)
		 * Continue parsing if Broadcast Audio Announcement Service
		 * was not found.
		 */
		if (*broadcast_id == INVALID_BROADCAST_ID) {
		if (*broadcast_id == BT_BAP_INVALID_BROADCAST_ID) {
			return true;
		}
	}
@@ -223,10 +222,10 @@ static void broadcast_scan_recv(const struct bt_le_scan_recv_info *info,
		return;
	}

	broadcast_id = INVALID_BROADCAST_ID;
	broadcast_id = BT_BAP_INVALID_BROADCAST_ID;
	bt_data_parse(ad, scan_check_and_sync_broadcast, (void *)&broadcast_id);

	if ((broadcast_id != INVALID_BROADCAST_ID) && pbs_found) {
	if ((broadcast_id != BT_BAP_INVALID_BROADCAST_ID) && pbs_found) {
		sync_broadcast_pa(info, broadcast_id);
	}
}
+2 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@
#define SEM_TIMEOUT K_SECONDS(10)
#define PA_SYNC_SKIP         5
#define PA_SYNC_INTERVAL_TO_TIMEOUT_RATIO 20 /* Set the timeout relative to interval */
#define INVALID_BROADCAST_ID 0xFFFFFFFF

static bool tmap_bms_found;

@@ -209,10 +208,10 @@ static void broadcast_scan_recv(const struct bt_le_scan_recv_info *info,
		return;
	}

	broadcast_id = INVALID_BROADCAST_ID;
	broadcast_id = BT_BAP_INVALID_BROADCAST_ID;
	bt_data_parse(ad, scan_check_and_sync_broadcast, (void *)&broadcast_id);

	if ((broadcast_id != INVALID_BROADCAST_ID) && tmap_bms_found) {
	if ((broadcast_id != BT_BAP_INVALID_BROADCAST_ID) && tmap_bms_found) {
		sync_broadcast_pa(info, broadcast_id);
	}
}
Loading