11/*
22 * Copyright (c) 2019 Bose Corporation
3- * Copyright (c) 2020-2021 Nordic Semiconductor ASA
3+ * Copyright (c) 2020-2025 Nordic Semiconductor ASA
44 *
55 * SPDX-License-Identifier: Apache-2.0
66 */
99#include <stddef.h>
1010#include <stdint.h>
1111
12+ #include <zephyr/autoconf.h>
1213#include <zephyr/bluetooth/addr.h>
14+ #include <zephyr/bluetooth/audio/audio.h>
1315#include <zephyr/bluetooth/audio/bap.h>
16+ #include <zephyr/bluetooth/audio/csip.h>
17+ #include <zephyr/bluetooth/audio/tmap.h>
1418#include <zephyr/bluetooth/bluetooth.h>
19+ #include <zephyr/bluetooth/byteorder.h>
1520#include <zephyr/bluetooth/conn.h>
1621#include <zephyr/bluetooth/gap.h>
22+ #include <zephyr/bluetooth/uuid.h>
1723#include <zephyr/kernel.h>
1824#include <zephyr/net_buf.h>
1925#include <zephyr/sys/__assert.h>
2026#include <zephyr/sys/atomic_types.h>
2127#include <zephyr/sys/printk.h>
2228#include <zephyr/sys/util.h>
29+ #include <zephyr/sys/util_macro.h>
2330
2431#include "bs_cmd_line.h"
2532#include "bs_dynargs.h"
@@ -37,9 +44,37 @@ atomic_t flag_disconnected;
3744atomic_t flag_conn_updated ;
3845atomic_t flag_audio_received ;
3946volatile bt_security_t security_level ;
40-
41- const struct bt_data ad [AD_SIZE ] = {
42- BT_DATA_BYTES (BT_DATA_FLAGS , (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR ))
47+ #if defined(CONFIG_BT_CSIP_SET_MEMBER )
48+ uint8_t csip_rsi [BT_CSIP_RSI_SIZE ];
49+ #endif /* CONFIG_BT_CSIP_SET_MEMBER */
50+
51+ static const struct bt_data connectable_ad [] = {
52+ BT_DATA_BYTES (BT_DATA_FLAGS , (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR )),
53+ BT_DATA (BT_DATA_NAME_COMPLETE , CONFIG_BT_DEVICE_NAME , sizeof (CONFIG_BT_DEVICE_NAME ) - 1 ),
54+ BT_DATA_BYTES (BT_DATA_UUID16_SOME , BT_UUID_16_ENCODE (BT_UUID_ASCS_VAL ),
55+ BT_UUID_16_ENCODE (BT_UUID_CAS_VAL )),
56+ BT_DATA_BYTES (BT_DATA_UUID16_ALL , BT_UUID_16_ENCODE (BT_UUID_BASS_VAL ),
57+ BT_UUID_16_ENCODE (BT_UUID_PACS_VAL )),
58+ #if defined(CONFIG_BT_CAP_ACCEPTOR )
59+ BT_DATA_BYTES (BT_DATA_SVC_DATA16 , BT_UUID_16_ENCODE (BT_UUID_CAS_VAL ),
60+ BT_AUDIO_UNICAST_ANNOUNCEMENT_TARGETED ),
61+ #endif /* CONFIG_BT_CAP_ACCEPTOR */
62+ #if defined(CONFIG_BT_BAP_UNICAST_SERVER )
63+ BT_DATA_BYTES (BT_DATA_SVC_DATA16 , BT_UUID_16_ENCODE (BT_UUID_ASCS_VAL ),
64+ BT_AUDIO_UNICAST_ANNOUNCEMENT_TARGETED , BT_BYTES_LIST_LE16 (SINK_CONTEXT ),
65+ BT_BYTES_LIST_LE16 (SOURCE_CONTEXT ), 0x00 ,
66+ /* Metadata length */ ),
67+ #endif /* CONFIG_BT_BAP_UNICAST_SERVER */
68+ #if defined(CONFIG_BT_BAP_SCAN_DELEGATOR )
69+ BT_DATA_BYTES (BT_DATA_SVC_DATA16 , BT_UUID_16_ENCODE (BT_UUID_BASS_VAL )),
70+ #endif /* CONFIG_BT_BAP_SCAN_DELEGATOR */
71+ #if defined(CONFIG_BT_CSIP_SET_MEMBER )
72+ BT_DATA (BT_DATA_CSIS_RSI , csip_rsi , BT_CSIP_RSI_SIZE ),
73+ #endif /* CONFIG_BT_CSIP_SET_MEMBER */
74+ #if defined(CONFIG_BT_TMAP )
75+ BT_DATA_BYTES (BT_DATA_SVC_DATA16 , BT_UUID_16_ENCODE (BT_UUID_TMAS_VAL ),
76+ BT_UUID_16_ENCODE (TMAP_ROLE_SUPPORTED )),
77+ #endif /* CONFIG_BT_TMAP */
4378};
4479
4580static void device_found (const struct bt_le_scan_recv_info * info , struct net_buf_simple * ad_buf )
@@ -51,8 +86,9 @@ static void device_found(const struct bt_le_scan_recv_info *info, struct net_buf
5186 return ;
5287 }
5388
54- /* We're only interested in connectable events */
55- if ((info -> adv_props & BT_GAP_ADV_PROP_CONNECTABLE ) == 0 ) {
89+ /* We're only interested in extended advertising connectable events */
90+ if (((info -> adv_props & BT_GAP_ADV_PROP_EXT_ADV ) == 0U ||
91+ (info -> adv_props & BT_GAP_ADV_PROP_CONNECTABLE ) == 0U )) {
5692 return ;
5793 }
5894
@@ -150,6 +186,38 @@ BT_CONN_CB_DEFINE(conn_callbacks) = {
150186 .security_changed = security_changed_cb ,
151187};
152188
189+ void setup_connectable_adv (struct bt_le_ext_adv * * ext_adv )
190+ {
191+ int err ;
192+
193+ /* Create a non-connectable advertising set */
194+ err = bt_le_ext_adv_create (BT_LE_EXT_ADV_CONN , NULL , ext_adv );
195+ if (err != 0 ) {
196+ FAIL ("Unable to create extended advertising set: %d\n" , err );
197+ return ;
198+ }
199+
200+ err = bt_le_ext_adv_set_data (* ext_adv , connectable_ad , ARRAY_SIZE (connectable_ad ), NULL , 0 );
201+ if (err != 0 ) {
202+ FAIL ("Unable to set extended advertising data: %d\n" , err );
203+
204+ bt_le_ext_adv_delete (* ext_adv );
205+
206+ return ;
207+ }
208+
209+ err = bt_le_ext_adv_start (* ext_adv , BT_LE_EXT_ADV_START_DEFAULT );
210+ if (err != 0 ) {
211+ FAIL ("Failed to start advertising set (err %d)\n" , err );
212+
213+ bt_le_ext_adv_delete (* ext_adv );
214+
215+ return ;
216+ }
217+
218+ printk ("Advertising started\n" );
219+ }
220+
153221void test_tick (bs_time_t HW_device_time )
154222{
155223 if (bst_result != Passed ) {
0 commit comments