| /* |
| * 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; |
| |
| #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); |
| } |