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

#include <zephyr.h>
#include <stddef.h>
#include <ztest.h>

#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <host/hci_core.h>

#include <util/util.h>
#include <util/memq.h>
#include <util/dbuf.h>

#include <pdu.h>
#include <lll.h>
#include <lll_scan.h>
#include <lll/lll_df_types.h>
#include <lll_sync.h>
#include <ull_scan_types.h>
#include <ull_scan_internal.h>
#include <ull_sync_types.h>
#include <ull_sync_internal.h>

struct bt_le_per_adv_sync *g_per_sync;

static struct bt_le_per_adv_sync_param g_sync_create_param;

void common_create_per_sync_set(void)
{
	struct ll_scan_set *scan;
	struct ll_sync_set *sync;
	int err;

	bt_addr_le_copy(&g_sync_create_param.addr, BT_ADDR_LE_NONE);
	g_sync_create_param.options = 0;
	g_sync_create_param.sid = 0;
	g_sync_create_param.skip = 0;
	g_sync_create_param.timeout = 0xa;

	err = bt_le_per_adv_sync_create(&g_sync_create_param, &g_per_sync);
	zassert_equal(err, 0, "Failed to create periodic sync set");

	/* Below code makes fake sync enable and provides appropriate handle value to
	 * g_per_sync->handle. There is no complete sync established procedure,
	 * because it is not required to test DF functionality.
	 */
	scan = ull_scan_set_get(SCAN_HANDLE_1M);
	sync = scan->per_scan.sync;
	g_per_sync->handle = ull_sync_handle_get(sync);
	sync->lll.phy = PHY_2M;
	/* timeout_reload member is used by controller to check if sync was established. */
	sync->timeout_reload = 1;
}
