Can nRF52833 perform PAwR while also syncing to another PAwR device

Hi Nordic team,

We are developing two types of devices based on the Zephyr examples:

  1. periodic_adv_rsp

  2. periodic_sync_rsp

Our design uses the following PAwR configuration:

  • SUBEVENTS_INTERVAL = 20 (25ms)

  • NUM_SUBEVENTS = 5

  • Interval min/max = 100 (125ms)

  • Response slots = 1

We have modified the periodic_adv_rsp example so that it also syncs to another PAwR advertiser, but does not send any response back — it simply listens. In other words, this advertiser is also acting as a PAwR observer.

Here’s how we handle syncing:

  • When scanning, upon detecting a periodic advertiser, we call bt_le_per_adv_sync_create.

  • In the sync callback, we use bt_le_per_adv_sync_subevent to subscribe to all 5 subevents.

/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/bluetooth/att.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/conn.h>
#include <zephyr/bluetooth/gatt.h>
#include <zephyr/bluetooth/hci.h>

#include <zephyr/sys/util.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/logging/log.h>
#include <zephyr/drivers/flash.h>

#include <nrfx.h>
#include <dk_buttons_and_leds.h>

LOG_MODULE_REGISTER(main_app, CONFIG_MAIN_APP_LOG_LEVEL);

#define NUM_SUBEVENTS 		5
#define SUBEVENTS_INTERVAL 	20
#define PACKET_SIZE   		48
#define NAME_LEN      		30

#define DEVICE_NAME			CONFIG_BT_DEVICE_NAME
#define DEVICE_NAME_LEN		(sizeof(DEVICE_NAME) - 1)

#define UWB_THREAD_STACK_SIZE 4096
#define UWB_THREAD_PRIORITY   5

K_THREAD_STACK_DEFINE(uwb_stack, UWB_THREAD_STACK_SIZE);
struct k_thread uwb_thread_data;
uint64_t eui64_from_device = 0;

static bool         per_adv_found;
static bt_addr_le_t per_addr;
static uint16_t per_adv_sync_timeout;
static uint8_t      per_sid;
static struct bt_le_per_adv_sync *default_sync;


static K_SEM_DEFINE(sem_per_adv, 0, 1);
static K_SEM_DEFINE(sem_per_sync, 0, 1);
static K_SEM_DEFINE(sem_per_sync_lost, 0, 1);

static K_SEM_DEFINE(sem_connected, 0, 1);
static K_SEM_DEFINE(sem_discovered, 0, 1);
static K_SEM_DEFINE(sem_written, 0, 1);
static K_SEM_DEFINE(sem_disconnected, 0, 1);

struct k_poll_event events[] = {
	K_POLL_EVENT_STATIC_INITIALIZER(K_POLL_TYPE_SEM_AVAILABLE, K_POLL_MODE_NOTIFY_ONLY,
					&sem_connected, 0),
	K_POLL_EVENT_STATIC_INITIALIZER(K_POLL_TYPE_SEM_AVAILABLE, K_POLL_MODE_NOTIFY_ONLY,
					&sem_per_adv, 0),
	K_POLL_EVENT_STATIC_INITIALIZER(K_POLL_TYPE_SEM_AVAILABLE, K_POLL_MODE_NOTIFY_ONLY,
					&sem_per_sync_lost, 0),
};

static struct bt_uuid_128 pawr_char_uuid =
	BT_UUID_INIT_128(BT_UUID_128_ENCODE(0x12345678, 0x1234, 0x5678, 0x1234, 0x56789abcdef1));
static uint16_t pawr_attr_handle;
static const struct bt_le_per_adv_param per_adv_params = {
	.interval_min = (SUBEVENTS_INTERVAL * NUM_SUBEVENTS),
	.interval_max = (SUBEVENTS_INTERVAL * NUM_SUBEVENTS),
	.options = 0,
	.num_subevents = NUM_SUBEVENTS,
	.subevent_interval = SUBEVENTS_INTERVAL,
	.response_slot_delay = SUBEVENTS_INTERVAL - 2,
	.response_slot_spacing = 5,
	.num_response_slots = 1,
};

static struct bt_le_per_adv_subevent_data_params subevent_data_params[NUM_SUBEVENTS];
static struct net_buf_simple bufs[NUM_SUBEVENTS];
static uint8_t backing_store[NUM_SUBEVENTS][PACKET_SIZE];

BUILD_ASSERT(ARRAY_SIZE(bufs) == ARRAY_SIZE(subevent_data_params));
BUILD_ASSERT(ARRAY_SIZE(backing_store) == ARRAY_SIZE(subevent_data_params));

static uint32_t counter;
static uint32_t recv_counter;

struct bt_le_adv_param adv_param_noconn =
	BT_LE_ADV_PARAM_INIT(BT_LE_ADV_OPT_EXT_ADV,
			     BT_GAP_ADV_FAST_INT_MIN_1,
			     BT_GAP_ADV_FAST_INT_MAX_1,
			     NULL);

static const struct bt_data ad[] = {
	BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
	BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN),
};

static struct bt_le_scan_param scan_param = {
	.type     = BT_LE_SCAN_TYPE_ACTIVE,
	.interval = BT_GAP_SCAN_FAST_INTERVAL_MIN,
	.window   = BT_GAP_SCAN_FAST_WINDOW,
	.options  = BT_LE_SCAN_OPT_FILTER_DUPLICATE,
	.timeout  = 0,
};

static const char *phy2str(uint8_t phy)
{
	switch (phy) {
	case 0: return "No packets";
	case BT_GAP_LE_PHY_1M: return "LE 1M";
	case BT_GAP_LE_PHY_2M: return "LE 2M";
	case BT_GAP_LE_PHY_CODED: return "LE Coded";
	default: return "Unknown";
	}
}

static void request_cb(struct bt_le_ext_adv *adv, const struct bt_le_per_adv_data_request *request)
{
	int err;
	uint8_t to_send;
	struct net_buf_simple *buf;

	to_send = MIN(request->count, ARRAY_SIZE(subevent_data_params));

	for (size_t i = 0; i < to_send; i++) {
		buf = &bufs[i];
		buf->data[buf->len - 1] = (counter++) & 0xFF;

		subevent_data_params[i].subevent =
			(request->start + i) % per_adv_params.num_subevents;
		subevent_data_params[i].response_slot_start = 0;
		subevent_data_params[i].response_slot_count = 1;
		subevent_data_params[i].data = buf;
	}

	err = bt_le_per_adv_set_subevent_data(adv, to_send, subevent_data_params);
	if (err) {
		LOG_ERR("Failed to set subevent data (err %d)", err);
	} else {
		// LOG_INF("Subevent data set %u", counter);
	}
}

static bool print_ad_field(struct bt_data *data, void *user_data)
{
	ARG_UNUSED(user_data);

	LOG_DBG("Type: 0x%02X Len: %u", data->type, data->data_len);
	LOG_HEXDUMP_DBG(data->data, data->data_len, "response_cb");

	uint64_t eui64_tag;
	memcpy(&eui64_tag, &data->data[8], sizeof(eui64_tag));

	if (user_data) {
		memcpy(user_data, &eui64_tag, sizeof(eui64_tag));
	}

	return true;
}

static struct bt_conn *default_conn;

static void response_cb(struct bt_le_ext_adv *adv, struct bt_le_per_adv_response_info *info,
		     			struct net_buf_simple *buf)
{
	if (buf) {
		uint64_t eui64_tag_response = 0;
		bt_data_parse(buf, print_ad_field, &eui64_tag_response);
		LOG_INF("Response %llX: subevent %d, slot %d", eui64_tag_response, info->subevent, info->response_slot);
	}
}

static const struct bt_le_ext_adv_cb adv_cb = {
	.pawr_data_request = request_cb,
	.pawr_response = response_cb,
};

void connected_cb(struct bt_conn *conn, uint8_t err)
{
	LOG_INF("Connected (err 0x%02X)", err);

	__ASSERT(conn == default_conn, "Unexpected connected callback");

	if (err) {
		bt_conn_unref(default_conn);
		default_conn = NULL;
	}
}

void disconnected_cb(struct bt_conn *conn, uint8_t reason)
{
	LOG_INF("Disconnected, reason 0x%02X %s", reason, bt_hci_err_to_str(reason));

	k_sem_give(&sem_disconnected);
}

void remote_info_available_cb(struct bt_conn *conn, struct bt_conn_remote_info *remote_info)
{
	/* Need to wait for remote info before initiating PAST */
	k_sem_give(&sem_connected);
}

BT_CONN_CB_DEFINE(conn_cb) = {
	.connected = connected_cb,
	.disconnected = disconnected_cb,
	.remote_info_available = remote_info_available_cb,
};

static bool data_cb(struct bt_data *data, void *user_data)
{
	char *name = user_data;
	uint8_t len;

	switch (data->type) {
	case BT_DATA_NAME_SHORTENED:
	case BT_DATA_NAME_COMPLETE:
		len = MIN(data->data_len, NAME_LEN - 1);
		memcpy(name, data->data, len);
		name[len] = '\0';
		return true;

	default:
		return true;
	}
}

static void scan_recv(const struct bt_le_scan_recv_info *info,
					struct net_buf_simple *buf)
{
	char le_addr[BT_ADDR_LE_STR_LEN];
	char name[NAME_LEN];
	int err;

	if (default_conn) {
		return;
	}

	(void)memset(name, 0, sizeof(name));
	bt_data_parse(buf, data_cb, name);

	bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr));
	LOG_INF("[DEVICE]: %s, AD evt type %u, Tx Pwr: %i, RSSI %i %s "
	       "C:%u S:%u D:%u SR:%u E:%u Prim: %s, Secn: %s, "
	       "Interval: 0x%04x (%u ms), SID: %u",
	       le_addr, info->adv_type, info->tx_power, info->rssi, name,
	       (info->adv_props & BT_GAP_ADV_PROP_CONNECTABLE) != 0,
	       (info->adv_props & BT_GAP_ADV_PROP_SCANNABLE) != 0,
	       (info->adv_props & BT_GAP_ADV_PROP_DIRECTED) != 0,
	       (info->adv_props & BT_GAP_ADV_PROP_SCAN_RESPONSE) != 0,
	       (info->adv_props & BT_GAP_ADV_PROP_EXT_ADV) != 0,
	       phy2str(info->primary_phy), phy2str(info->secondary_phy),
	       info->interval, info->interval * 5 / 4, info->sid);

	// /* We're only interested in connectable events */
	// if (info->adv_type != BT_GAP_ADV_TYPE_ADV_IND && info->adv_type != BT_GAP_ADV_TYPE_ADV_DIRECT_IND) {
	// 	return;
	// }

	if (strcmp(name, "PAwR sync sample") == 0) {
		LOG_INF("Found PAwR sync sample");

		if (bt_le_scan_stop()) {
			LOG_INF("Stop scan error");
			return;
		}
		LOG_INF("Connect to tag");

		err = bt_conn_le_create(info->addr, BT_CONN_LE_CREATE_CONN, BT_LE_CONN_PARAM_DEFAULT,
					&default_conn);
		if (err) {
			LOG_ERR("Create conn to %s failed (%u)", le_addr, err);
		}
	} else if (strcmp(name, "PAwR adv sample") == 0) {
		LOG_INF("Found PAwR adv sample");

		if (bt_le_scan_stop()) {
			LOG_INF("Stop scan error");
			return;
		}

		if (info->interval) {
			LOG_INF("Found int: %u", info->interval);
		}

		if (!per_adv_found && info->interval) {
			uint32_t interval_us;
			uint32_t timeout;

			per_adv_found = true;
			recv_counter = 0;

			/* Add retries and convert to unit in 10's of ms */
			interval_us = BT_GAP_PER_ADV_INTERVAL_TO_US(info->interval);

			timeout = BT_GAP_US_TO_PER_ADV_SYNC_TIMEOUT(interval_us);

			/* 4 attempts */
			timeout *= 4;

			/* Enforce restraints */
			per_adv_sync_timeout =
				CLAMP(timeout, BT_GAP_PER_ADV_MIN_TIMEOUT, BT_GAP_PER_ADV_MAX_TIMEOUT);

			per_sid = info->sid;
			bt_addr_le_copy(&per_addr, info->addr);

			LOG_INF("per_adv_found: %u", per_adv_found);
			k_sem_give(&sem_per_adv);
		}
	}
}

static struct bt_le_scan_cb scan_callbacks = {
	.recv = scan_recv,
};

static void sync_cb(struct bt_le_per_adv_sync *sync,
		    struct bt_le_per_adv_sync_synced_info *info)
{
	char le_addr[BT_ADDR_LE_STR_LEN];

	bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr));

	LOG_INF("PER_ADV_SYNC[%u]: [DEVICE]: %s synced, "
	       "Interval 0x%04x (%u ms), PHY %s",
	       bt_le_per_adv_sync_get_index(sync), le_addr,
	       info->interval, info->interval * 5 / 4, phy2str(info->phy));


	struct bt_le_per_adv_sync_subevent_params params;
	uint8_t subevents[256];
	int err;
	LOG_INF("Synced to %s with %d subevents", le_addr, info->num_subevents);

	default_sync = sync;

	for (size_t i = 0; i < info->num_subevents; i++) {
		subevents[i] = i;
	}

	params.properties = 0;
	params.num_subevents = info->num_subevents;
	params.subevents = subevents;

	err = bt_le_per_adv_sync_subevent(sync, &params);
	if (err) {
		LOG_ERR("Failed to set subevents to sync to (err %d)", err);
	} else {
		LOG_INF("Changed sync to all subevents %u", info->num_subevents);
	}

	k_sem_give(&sem_per_sync);
}

static void term_cb(struct bt_le_per_adv_sync *sync,
		    const struct bt_le_per_adv_sync_term_info *info)
{
	char le_addr[BT_ADDR_LE_STR_LEN];

	bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr));

	LOG_INF("PER_ADV_SYNC[%u]: [DEVICE]: %s sync terminated",
	       bt_le_per_adv_sync_get_index(sync), le_addr);

	k_sem_give(&sem_per_sync_lost);
}

static void recv_cb(struct bt_le_per_adv_sync *sync,
		    const struct bt_le_per_adv_sync_recv_info *info,
		    struct net_buf_simple *buf)
{
	char le_addr[BT_ADDR_LE_STR_LEN];
	char data_str[129];
	static int64_t last_ticks = 0;
	int64_t now_ticks = k_uptime_ticks();

	bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr));
	bin2hex(buf->data, buf->len, data_str, sizeof(data_str));

	if (buf->len == PACKET_SIZE) {
		LOG_INF("Ticks: %5lld Sub: %u, Count: %u,[DEVICE]: %s, tx_power %i, "
			"RSSI %i, CTE %u, data length %u, data: %s", (now_ticks - last_ticks), info->subevent,
			info->periodic_event_counter, le_addr, info->tx_power,
			info->rssi, info->cte_type, buf->len, data_str);

		// if (recv_counter > 0 && ((now_ticks - last_ticks) > 4096)) {
		// 	LOG_INF("Delete Periodic Advertising?: %u", recv_counter);
		// 	int err = bt_le_per_adv_sync_delete(default_sync);
		// 	if (err) {
		// 		LOG_INF("Deleting Periodic Advertising Sync failed (err %d)", err);
		// 	}
		// }

		last_ticks = now_ticks;
	}

	if (buf && buf->len) {
		LOG_HEXDUMP_DBG(buf->data, buf->len, "Recieved Data");
		recv_counter++;
	} else if (buf) {
		LOG_INF("Received empty indication: subevent %d", info->subevent);
	} else {
		LOG_WRN("Failed to receive indication: subevent %d", info->subevent);
	}
}

static struct bt_le_per_adv_sync_cb sync_callbacks = {
	.synced = sync_cb,
	.term = term_cb,
	.recv = recv_cb
};

static uint8_t discover_func(struct bt_conn *conn, const struct bt_gatt_attr *attr,
			     struct bt_gatt_discover_params *params)
{
	struct bt_gatt_chrc *chrc;
	char str[BT_UUID_STR_LEN];

	LOG_INF("Discovery: attr %p", attr);

	if (!attr) {
		return BT_GATT_ITER_STOP;
	}

	chrc = (struct bt_gatt_chrc *)attr->user_data;

	bt_uuid_to_str(chrc->uuid, str, sizeof(str));
	LOG_INF("UUID %s", str);

	if (!bt_uuid_cmp(chrc->uuid, &pawr_char_uuid.uuid)) {
		pawr_attr_handle = chrc->value_handle;

		LOG_INF("Characteristic handle: %d", pawr_attr_handle);

		k_sem_give(&sem_discovered);
	}

	return BT_GATT_ITER_STOP;
}

static void write_func(struct bt_conn *conn, uint8_t err, struct bt_gatt_write_params *params)
{
	if (err) {
		LOG_ERR("Write failed (err %d)", err);
		return;
	}

	k_sem_give(&sem_written);
}

void init_bufs(void)
{
	for (size_t i = 0; i < ARRAY_SIZE(backing_store); i++) {
		backing_store[i][0] = ARRAY_SIZE(backing_store[i]) - 1;
		backing_store[i][1] = BT_DATA_MANUFACTURER_DATA;
		backing_store[i][2] = 0x59; /* Nordic */
		backing_store[i][3] = 0x00;

		memcpy(&backing_store[i][4], &eui64_from_device, sizeof(eui64_from_device));

		for (size_t j = 12; j < PACKET_SIZE; j++) {
			backing_store[i][j] = 0x00;
		}

		net_buf_simple_init_with_data(&bufs[i], &backing_store[i],
					      ARRAY_SIZE(backing_store[i]));
	}
}

struct pawr_timing {
	uint8_t subevent;
	uint8_t response_slot;
} __packed;

static uint8_t num_synced;

int main(void)
{
	int err;
	struct bt_le_ext_adv *pawr_adv;
	struct bt_gatt_discover_params discover_params;
	struct bt_gatt_write_params write_params;
	struct pawr_timing sync_config;
	struct bt_le_per_adv_sync_param sync_create_param;
	struct bt_le_per_adv_sync *sync;

	dk_leds_init();

	init_bufs();

	LOG_INF("Starting Periodic Advertising Demo");

	/* Initialize the Bluetooth Subsystem */
	err = bt_enable(NULL);
	if (err) {
		LOG_ERR("Bluetooth init failed (err %d)", err);
		return 0;
	}

	err = bt_le_scan_cb_register(&scan_callbacks);
	if (err) {
		LOG_ERR("Failed to register scanning callbacks (err %d)", err);
		return 0;
	}

	/* Create a non-connectable advertising set */
	err = bt_le_ext_adv_create(&adv_param_noconn, &adv_cb, &pawr_adv);
	if (err) {
		LOG_ERR("Failed to create advertising set (err %d)", err);
		return 0;
	}

	/* Set periodic advertising parameters */
	err = bt_le_per_adv_set_param(pawr_adv, &per_adv_params);
	if (err) {
		LOG_ERR("Failed to set periodic advertising parameters (err %d)", err);
		return 0;
	}

	/* Enable Periodic Advertising */
	LOG_INF("Start Periodic Advertising");
	err = bt_le_per_adv_start(pawr_adv);
	if (err) {
		LOG_ERR("Failed to enable periodic advertising (err %d)", err);
		return 0;
	}

	/* Set extended advertising parameters */
	err = bt_le_ext_adv_set_data(pawr_adv, ad, ARRAY_SIZE(ad), NULL, 0);
	if (err) {
		LOG_ERR("Failed setting adv data (err %d)", err);
		return err;
	}

	LOG_INF("Start Extended Advertising");
	err = bt_le_ext_adv_start(pawr_adv, BT_LE_EXT_ADV_START_DEFAULT);
	if (err) {
		LOG_ERR("Failed to start extended advertising (err %d)", err);
		return 0;
	}

	LOG_INF("Periodic Advertising callbacks register...");
	bt_le_per_adv_sync_cb_register(&sync_callbacks);
	LOG_INF("Success.");

	while (true) {
		/* Enable continuous scanning */
		bt_le_scan_stop();
		err = bt_le_scan_start(&scan_param, NULL);
		if (err) {
			LOG_ERR("Scanning failed to start (err %d)", err);
			return 0;
		}

		LOG_INF("Scanning successfully started");

		/* Wait for either remote info available or involuntary disconnect */
		k_poll(events, ARRAY_SIZE(events), K_FOREVER);
		if (events[0].state == K_POLL_STATE_SEM_AVAILABLE) {
			k_poll_signal_reset(events[0].signal);
			events[0].state = K_POLL_STATE_NOT_READY;

			err = bt_le_per_adv_set_info_transfer(pawr_adv, default_conn, 0);
			if (err) {
				LOG_ERR("Failed to send PAST (err %d)", err);
				goto disconnect;
			}

			LOG_INF("PAST sent");

			discover_params.uuid = &pawr_char_uuid.uuid;
			discover_params.func = discover_func;
			discover_params.start_handle = BT_ATT_FIRST_ATTRIBUTE_HANDLE;
			discover_params.end_handle = BT_ATT_LAST_ATTRIBUTE_HANDLE;
			discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC;
			err = bt_gatt_discover(default_conn, &discover_params);
			if (err) {
				LOG_ERR("Discovery failed (err %d)", err);
				goto disconnect;
			}

			LOG_INF("Discovery started");

			err = k_sem_take(&sem_discovered, K_SECONDS(10));
			if (err) {
				LOG_ERR("Timed out during GATT discovery");
				goto disconnect;
			}

			sync_config.subevent = num_synced % NUM_SUBEVENTS;
			sync_config.response_slot = num_synced / NUM_SUBEVENTS;
			num_synced++;

			write_params.func = write_func;
			write_params.handle = pawr_attr_handle;
			write_params.offset = 0;
			write_params.data = &sync_config;
			write_params.length = sizeof(sync_config);

			err = bt_gatt_write(default_conn, &write_params);
			if (err) {
				LOG_ERR("Write failed (err %d)", err);
				num_synced--;
				goto disconnect;
			}

			LOG_INF("Write started");

			err = k_sem_take(&sem_written, K_SECONDS(10));
			if (err) {
				LOG_ERR("Timed out during GATT write");
				num_synced--;
				goto disconnect;
			}

			LOG_INF("PAwR config written to sync %d, disconnecting", num_synced - 1);

	disconnect:
			/* Adding delay (2ms * interval value, using 2ms intead of the 1.25ms
			* used by controller) to ensure sync is established before
			* disconnection.
			*/
			k_sleep(K_MSEC(per_adv_params.interval_max * 2));

			err = bt_conn_disconnect(default_conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
			if (err != 0 && err != -ENOTCONN) {
				return 0;
			}

			k_sem_take(&sem_disconnected, K_FOREVER);

			bt_conn_unref(default_conn);
			default_conn = NULL;
		}

		if (events[1].state == K_POLL_STATE_SEM_AVAILABLE) {
			k_poll_signal_reset(events[1].signal);
			events[1].state = K_POLL_STATE_NOT_READY;
			LOG_INF("Found periodic advertising.");
		
			bt_addr_le_copy(&sync_create_param.addr, &per_addr);
			sync_create_param.options = 0;
			sync_create_param.sid = per_sid;
			sync_create_param.skip = 1;
			sync_create_param.timeout = per_adv_sync_timeout;

			LOG_INF("Creating Periodic Advertising Sync Timeout: %u (unit of 10ms)", sync_create_param.timeout);
			err = bt_le_per_adv_sync_create(&sync_create_param, &sync);
			if (err) {
				LOG_INF("failed (err %d)", err);
				return 0;
			}
			LOG_INF("success.");

			err = k_sem_take(&sem_per_sync, K_MSEC(per_adv_sync_timeout*10));
			if (err) {
				LOG_INF("Waiting for periodic sync failed (err %d)", err);
				per_adv_found = false;
				err = bt_le_per_adv_sync_delete(sync);
				if (err) {
					LOG_INF("Deleting Periodic Advertising Sync failed (err %d)", err);
					return 0;
				}
				LOG_INF("Deleting Periodic Advertising Sync done");
				continue;
			}

			LOG_INF("Sync done.");
		}

		if (events[2].state == K_POLL_STATE_SEM_AVAILABLE) {
			k_poll_signal_reset(events[2].signal);
			events[2].state = K_POLL_STATE_NOT_READY;
			LOG_INF("Periodic sync lost, retrying...");
			per_adv_found = false;
			continue;
		}
	}

	return 0;
}

Everything works as expected in many cases, but we notice a strange issue:

[00:01:02.955,718] <inf> main_app: Ticks:   819 Sub: 1, Count: 562,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f5
[00:01:02.980,743] <inf> main_app: Ticks:   819 Sub: 2, Count: 562,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6
[00:01:03.005,737] <inf> main_app: Ticks:   819 Sub: 3, Count: 562,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f7
[00:01:03.030,731] <inf> main_app: Ticks:   820 Sub: 4, Count: 562,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8
[00:01:03.055,725] <inf> main_app: Ticks:   819 Sub: 0, Count: 563,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9
[00:01:03.080,749] <inf> main_app: Ticks:   819 Sub: 1, Count: 563,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa
[00:01:03.105,743] <inf> main_app: Ticks:   819 Sub: 2, Count: 563,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fb
[00:01:03.130,737] <inf> main_app: Ticks:   820 Sub: 3, Count: 563,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc
[00:01:03.155,731] <inf> main_app: Ticks:   819 Sub: 4, Count: 563,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fd
[00:01:03.180,755] <inf> main_app: Ticks:   819 Sub: 0, Count: 564,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe
[00:01:03.205,749] <inf> main_app: Ticks:   819 Sub: 1, Count: 564,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff
[00:01:03.230,743] <inf> main_app: Ticks:   820 Sub: 2, Count: 564,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
[00:01:03.255,737] <inf> main_app: Ticks:   819 Sub: 3, Count: 564,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
[00:01:03.280,761] <inf> main_app: Ticks:   819 Sub: 4, Count: 564,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
[00:01:03.305,755] <inf> main_app: Ticks:   819 Sub: 0, Count: 565,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003
[00:01:03.330,749] <inf> main_app: Ticks:   820 Sub: 1, Count: 565,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
[00:01:03.380,767] <inf> main_app: Ticks:  1638 Sub: 3, Count: 565,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006
[00:01:03.405,761] <inf> main_app: Ticks:   819 Sub: 4, Count: 565,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
[00:01:03.430,755] <inf> main_app: Ticks:   820 Sub: 0, Count: 566,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008
[00:01:03.505,828] <inf> main_app: Ticks:  2459 Sub: 3, Count: 566,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b
[00:01:03.780,792] <inf> main_app: Ticks:  9010 Sub: 4, Count: 568,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016
[00:01:04.055,816] <inf> main_app: Ticks:  9012 Sub: 0, Count: 571,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021
[00:01:04.330,841] <inf> main_app: Ticks:  9012 Sub: 1, Count: 573,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c
[00:01:04.605,865] <inf> main_app: Ticks:  9012 Sub: 2, Count: 575,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037
[00:01:04.880,859] <inf> main_app: Ticks:  9012 Sub: 3, Count: 577,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042
[00:01:05.155,883] <inf> main_app: Ticks:  9012 Sub: 4, Count: 579,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d
[00:01:05.430,908] <inf> main_app: Ticks:  9011 Sub: 0, Count: 582,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058
[00:01:05.705,963] <inf> main_app: Ticks:  9014 Sub: 1, Count: 584,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063
[00:01:05.980,957] <inf> main_app: Ticks:  9010 Sub: 2, Count: 586,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000006e
[00:01:06.256,011] <inf> main_app: Ticks:  9013 Sub: 3, Count: 588,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079
[00:01:06.530,975] <inf> main_app: Ticks:  9010 Sub: 4, Count: 590,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084
[00:01:06.805,999] <inf> main_app: Ticks:  9012 Sub: 0, Count: 593,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000008f
[00:01:07.081,024] <inf> main_app: Ticks:  9012 Sub: 1, Count: 595,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a
[00:01:07.356,048] <inf> main_app: Ticks:  9012 Sub: 2, Count: 597,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5
[00:01:07.631,103] <inf> main_app: Ticks:  9013 Sub: 3, Count: 599,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0
[00:01:07.906,066] <inf> main_app: Ticks:  9010 Sub: 4, Count: 601,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb
[00:01:08.181,091] <inf> main_app: Ticks:  9012 Sub: 0, Count: 604,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6
[00:01:08.456,085] <inf> main_app: Ticks:  9012 Sub: 1, Count: 606,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1
[00:01:08.731,109] <inf> main_app: Ticks:  9011 Sub: 2, Count: 608,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dc
[00:01:09.006,134] <inf> main_app: Ticks:  9013 Sub: 3, Count: 610,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7
[00:01:09.281,158] <inf> main_app: Ticks:  9011 Sub: 4, Count: 612,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2
[00:01:09.556,213] <inf> main_app: Ticks:  9014 Sub: 0, Count: 615,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fd
[00:01:09.831,207] <inf> main_app: Ticks:  9010 Sub: 1, Count: 617,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008
[00:01:10.106,201] <inf> main_app: Ticks:  9012 Sub: 2, Count: 619,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013
[00:01:10.381,225] <inf> main_app: Ticks:  9012 Sub: 3, Count: 621,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e
[00:01:10.656,250] <inf> main_app: Ticks:  9011 Sub: 4, Count: 623,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029
[00:01:10.931,274] <inf> main_app: Ticks:  9012 Sub: 0, Count: 626,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034
[00:01:11.206,329] <inf> main_app: Ticks:  9013 Sub: 1, Count: 628,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f
[00:01:11.481,292] <inf> main_app: Ticks:  9011 Sub: 2, Count: 630,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a
[00:01:11.756,317] <inf> main_app: Ticks:  9012 Sub: 3, Count: 632,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055
[00:01:12.031,341] <inf> main_app: Ticks:  9011 Sub: 4, Count: 634,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060
[00:01:12.306,365] <inf> main_app: Ticks:  9012 Sub: 0, Count: 637,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b
[00:01:12.581,390] <inf> main_app: Ticks:  9012 Sub: 1, Count: 639,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076
[00:01:12.856,384] <inf> main_app: Ticks:  9012 Sub: 2, Count: 641,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081
[00:01:13.131,408] <inf> main_app: Ticks:  9011 Sub: 3, Count: 643,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -38, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000008c
[00:01:13.406,433] <inf> main_app: Ticks:  9012 Sub: 4, Count: 645,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097
[00:01:13.681,457] <inf> main_app: Ticks:  9012 Sub: 0, Count: 648,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -44, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2
[00:01:13.956,512] <inf> main_app: Ticks:  9014 Sub: 1, Count: 650,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ad
[00:01:14.231,475] <inf> main_app: Ticks:  9010 Sub: 2, Count: 652,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8
[00:01:14.506,500] <inf> main_app: Ticks:  9011 Sub: 3, Count: 654,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3
[00:01:14.781,585] <inf> main_app: Ticks:  9014 Sub: 4, Count: 656,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ce
[00:01:15.056,549] <inf> main_app: Ticks:  9010 Sub: 0, Count: 659,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9
[00:01:15.331,542] <inf> main_app: Ticks:  9012 Sub: 1, Count: 661,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4
[00:01:15.606,567] <inf> main_app: Ticks:  9012 Sub: 2, Count: 663,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ef
[00:01:15.881,591] <inf> main_app: Ticks:  9011 Sub: 3, Count: 665,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa
[00:01:16.156,616] <inf> main_app: Ticks:  9012 Sub: 4, Count: 667,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005
[00:01:16.431,640] <inf> main_app: Ticks:  9012 Sub: 0, Count: 670,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010
[00:01:16.706,634] <inf> main_app: Ticks:  9012 Sub: 1, Count: 672,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -38, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b
[00:01:16.981,719] <inf> main_app: Ticks:  9013 Sub: 2, Count: 674,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026
[00:01:17.256,683] <inf> main_app: Ticks:  9010 Sub: 3, Count: 676,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031
[00:01:17.531,707] <inf> main_app: Ticks:  9012 Sub: 4, Count: 678,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c
[00:01:17.806,732] <inf> main_app: Ticks:  9012 Sub: 0, Count: 681,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047
[00:01:18.081,726] <inf> main_app: Ticks:  9012 Sub: 1, Count: 683,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052
[00:01:18.356,750] <inf> main_app: Ticks:  9012 Sub: 2, Count: 685,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000005d
[00:01:18.631,774] <inf> main_app: Ticks:  9011 Sub: 3, Count: 687,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068
[00:01:18.906,829] <inf> main_app: Ticks:  9014 Sub: 4, Count: 689,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073
[00:01:19.181,823] <inf> main_app: Ticks:  9010 Sub: 0, Count: 692,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000007e
[00:01:19.456,817] <inf> main_app: Ticks:  9012 Sub: 1, Count: 694,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089
[00:01:19.731,842] <inf> main_app: Ticks:  9011 Sub: 2, Count: 696,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094
[00:01:20.006,866] <inf> main_app: Ticks:  9012 Sub: 3, Count: 698,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f
[00:01:20.281,890] <inf> main_app: Ticks:  9012 Sub: 4, Count: 700,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa
[00:01:20.556,915] <inf> main_app: Ticks:  9012 Sub: 0, Count: 703,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5
[00:01:20.831,909] <inf> main_app: Ticks:  9012 Sub: 1, Count: 705,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0
[00:01:21.106,933] <inf> main_app: Ticks:  9011 Sub: 2, Count: 707,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cb
[00:01:21.382,019] <inf> main_app: Ticks:  9014 Sub: 3, Count: 709,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6
[00:01:21.656,982] <inf> main_app: Ticks:  9010 Sub: 4, Count: 711,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1
[00:01:21.931,976] <inf> main_app: Ticks:  9012 Sub: 0, Count: 714,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ec
[00:01:22.207,000] <inf> main_app: Ticks:  9012 Sub: 1, Count: 716,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f7
[00:01:22.482,025] <inf> main_app: Ticks:  9011 Sub: 2, Count: 718,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
[00:01:22.757,049] <inf> main_app: Ticks:  9012 Sub: 3, Count: 720,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d
[00:01:23.032,073] <inf> main_app: Ticks:  9012 Sub: 4, Count: 722,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018
[00:01:23.307,067] <inf> main_app: Ticks:  9012 Sub: 0, Count: 725,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023
[00:01:23.582,092] <inf> main_app: Ticks:  9011 Sub: 1, Count: 727,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e
[00:01:23.857,116] <inf> main_app: Ticks:  9012 Sub: 2, Count: 729,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039
[00:01:24.132,141] <inf> main_app: Ticks:  9012 Sub: 3, Count: 731,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044
[00:01:24.407,165] <inf> main_app: Ticks:  9012 Sub: 4, Count: 733,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004f
[00:01:24.682,159] <inf> main_app: Ticks:  9012 Sub: 0, Count: 736,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a
[00:01:24.957,183] <inf> main_app: Ticks:  9012 Sub: 1, Count: 738,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065
[00:01:25.232,208] <inf> main_app: Ticks:  9011 Sub: 2, Count: 740,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070
[00:01:25.507,232] <inf> main_app: Ticks:  9012 Sub: 3, Count: 742,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b
[00:01:25.782,257] <inf> main_app: Ticks:  9012 Sub: 4, Count: 744,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086
[00:01:26.057,250] <inf> main_app: Ticks:  9012 Sub: 0, Count: 747,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -38, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091
[00:01:26.332,275] <inf> main_app: Ticks:  9011 Sub: 1, Count: 749,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c
[00:01:26.607,299] <inf> main_app: Ticks:  9012 Sub: 2, Count: 751,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7
[00:01:26.882,324] <inf> main_app: Ticks:  9012 Sub: 3, Count: 753,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2
[00:01:27.157,348] <inf> main_app: Ticks:  9012 Sub: 4, Count: 755,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bd
[00:01:27.432,342] <inf> main_app: Ticks:  9012 Sub: 0, Count: 758,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c8
[00:01:27.707,366] <inf> main_app: Ticks:  9011 Sub: 1, Count: 760,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3
[00:01:27.982,391] <inf> main_app: Ticks:  9012 Sub: 2, Count: 762,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de
[00:01:28.257,415] <inf> main_app: Ticks:  9012 Sub: 3, Count: 764,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9
[00:01:28.532,409] <inf> main_app: Ticks:  9012 Sub: 4, Count: 766,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4
[00:01:28.807,434] <inf> main_app: Ticks:  9012 Sub: 0, Count: 769,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff
[00:01:29.082,458] <inf> main_app: Ticks:  9011 Sub: 1, Count: 771,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a
[00:01:29.357,482] <inf> main_app: Ticks:  9012 Sub: 2, Count: 773,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015
[00:01:29.632,507] <inf> main_app: Ticks:  9012 Sub: 3, Count: 775,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020
[00:01:29.907,531] <inf> main_app: Ticks:  9012 Sub: 4, Count: 777,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b
[00:01:30.182,525] <inf> main_app: Ticks:  9012 Sub: 0, Count: 780,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036
[00:01:30.457,550] <inf> main_app: Ticks:  9011 Sub: 1, Count: 782,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041
[00:01:30.732,574] <inf> main_app: Ticks:  9012 Sub: 2, Count: 784,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c
[00:01:31.007,598] <inf> main_app: Ticks:  9012 Sub: 3, Count: 786,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057
[00:01:31.282,623] <inf> main_app: Ticks:  9012 Sub: 4, Count: 788,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062
[00:01:31.557,647] <inf> main_app: Ticks:  9012 Sub: 0, Count: 791,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d
[00:01:31.832,611] <inf> main_app: Ticks:  9011 Sub: 1, Count: 793,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078
[00:01:32.107,635] <inf> main_app: Ticks:  9012 Sub: 2, Count: 795,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083
[00:01:32.382,659] <inf> main_app: Ticks:  9012 Sub: 3, Count: 797,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e
[00:01:32.657,684] <inf> main_app: Ticks:  9011 Sub: 4, Count: 799,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099
[00:01:32.932,708] <inf> main_app: Ticks:  9012 Sub: 0, Count: 802,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4
[00:01:33.207,702] <inf> main_app: Ticks:  9012 Sub: 1, Count: 804,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000af
[00:01:33.482,727] <inf> main_app: Ticks:  9012 Sub: 2, Count: 806,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ba
[00:01:33.757,751] <inf> main_app: Ticks:  9011 Sub: 3, Count: 808,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5
[00:01:34.032,775] <inf> main_app: Ticks:  9012 Sub: 4, Count: 810,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0
[00:01:34.307,800] <inf> main_app: Ticks:  9012 Sub: 0, Count: 813,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db
[00:01:34.582,794] <inf> main_app: Ticks:  9012 Sub: 1, Count: 815,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -38, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e6
[00:01:34.857,818] <inf> main_app: Ticks:  9012 Sub: 2, Count: 817,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -38, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1
[00:01:35.132,843] <inf> main_app: Ticks:  9011 Sub: 3, Count: 819,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fc
[00:01:35.407,867] <inf> main_app: Ticks:  9012 Sub: 4, Count: 821,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007
[00:01:35.682,891] <inf> main_app: Ticks:  9012 Sub: 0, Count: 824,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012
[00:01:35.957,885] <inf> main_app: Ticks:  9012 Sub: 1, Count: 826,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d
[00:01:36.232,910] <inf> main_app: Ticks:  9012 Sub: 2, Count: 828,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028
[00:01:36.507,995] <inf> main_app: Ticks:  9013 Sub: 3, Count: 830,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -39, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033
[00:01:36.782,958] <inf> main_app: Ticks:  9010 Sub: 4, Count: 832,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e
[00:01:37.058,013] <inf> main_app: Ticks:  9014 Sub: 0, Count: 835,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -42, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049
[00:01:37.332,977] <inf> main_app: Ticks:  9010 Sub: 1, Count: 837,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -41, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054
[00:01:37.608,001] <inf> main_app: Ticks:  9011 Sub: 2, Count: 839,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f
[00:01:37.883,026] <inf> main_app: Ticks:  9012 Sub: 3, Count: 841,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a
[00:01:38.158,050] <inf> main_app: Ticks:  9012 Sub: 4, Count: 843,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -40, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075
[00:01:38.433,044] <inf> main_app: Ticks:  9012 Sub: 0, Count: 846,[DEVICE]: 2A:05:6E:DC:66:6C (random), tx_power 127, RSSI -43, CTE 0, data length 48, data: 2fff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080

Sometimes, certain subevents (e.g., #1 or #2) are missed — which we understand can happen occasionally. However, in some cases, multiple consecutive subevents are missing for a long time, and then sync resumes. The sync interval appears unstable at times.

Our main question is:

Is it fully supported on the nRF52833 to perform Periodic Advertising with Responses (PAwR) while also synchronizing to another PAwR device as a listener (non-responder)? Are there any known limitations or timing conflicts that could explain the missing subevents?

We appreciate any guidance or insights into this setup.

Thank you!

Related