blob: 2d4ed6f356ca1e10f20f5b3e9fb9942ba37fd5dc [file] [log] [blame]
/*
* Copyright (c) 2021 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/bluetooth/bluetooth.h>
#include "common.h"
extern enum bst_result_t bst_result;
/* TODO: Deprecate in favor of broadcast_source_test */
#define BROADCAST_ID_ENCODE(broadcast_id) \
(((broadcast_id) >> 0) & 0xFF), \
(((broadcast_id) >> 8) & 0xFF), \
(((broadcast_id) >> 16) & 0xFF)
static void test_main(void)
{
int err;
uint32_t broadcast_id = 1234;
struct bt_le_ext_adv *adv;
struct bt_data ad[2] = {
BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),
BT_DATA_BYTES(BT_DATA_SVC_DATA16,
BT_UUID_16_ENCODE(BT_UUID_BROADCAST_AUDIO_VAL),
BROADCAST_ID_ENCODE(broadcast_id))
};
err = bt_enable(NULL);
if (err) {
FAIL("Bluetooth init failed (err %d)\n", err);
return;
}
printk("Bluetooth initialized\n");
/* Create a non-connectable non-scannable advertising set */
err = bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN_NAME, NULL, &adv);
if (err) {
FAIL("Failed to create advertising set (err %d)\n", err);
return;
}
/* Set periodic advertising parameters */
err = bt_le_per_adv_set_param(adv, BT_LE_PER_ADV_DEFAULT);
if (err) {
FAIL("Failed to set periodic advertising parameters (err %d)\n", err);
return;
}
/* Set adv data */
err = bt_le_ext_adv_set_data(adv, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
FAIL("Failed to set advertising data (err %d)\n", err);
return;
}
/* Enable Periodic Advertising */
err = bt_le_per_adv_start(adv);
if (err) {
FAIL("Failed to enable periodic advertising (err %d)\n", err);
return;
}
/* Start extended advertising */
err = bt_le_ext_adv_start(adv, BT_LE_EXT_ADV_START_DEFAULT);
if (err) {
FAIL("Failed to start extended advertising (err %d)\n", err);
return;
}
printk("Advertising successfully started\n");
k_sleep(K_SECONDS(10));
PASS("BASS broadcaster passed\n");
}
static const struct bst_test_instance test_bass_broadcaster[] = {
{
.test_id = "bass_broadcaster",
.test_post_init_f = test_init,
.test_tick_f = test_tick,
.test_main_f = test_main
},
BSTEST_END_MARKER
};
struct bst_test_list *test_bass_broadcaster_install(struct bst_test_list *tests)
{
return bst_add_tests(tests, test_bass_broadcaster);
}