Samples: Bluetooth: CAP Acceptor broadcast support

Add broadcast support for the CAP acceptor sample.

This adds new sample-specific Kconfig options to help
select the right Kconfig options based on whether
unicast, broadcast or both is being used.

The babblesim implemented for the broadcast has been expanded
to verify that the CAP acceptor receives the broadcast audio.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
Emil Gydesen 2024-05-07 15:46:21 +02:00 committed by Alberto Escolar
commit d578c598eb
15 changed files with 912 additions and 41 deletions

View file

@ -9,9 +9,11 @@ set(cap_acceptor_path ${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor)
target_sources(app PRIVATE
${cap_acceptor_path}/src/main.c
${cap_acceptor_path}/src/cap_acceptor_unicast.c
)
zephyr_sources_ifdef(CONFIG_SAMPLE_UNICAST ${cap_acceptor_path}/src/cap_acceptor_unicast.c)
zephyr_sources_ifdef(CONFIG_SAMPLE_BROADCAST ${cap_acceptor_path}/src/cap_acceptor_broadcast.c)
target_sources(app PRIVATE
src/cap_acceptor_sample_test.c
src/test_main.c

View file

@ -0,0 +1,4 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
source "${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor/Kconfig"

View file

@ -5,6 +5,8 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/sys/util_macro.h>
#include "bs_types.h"
#include "bs_tracing.h"
#include "bs_utils.h"
@ -43,16 +45,37 @@ static void test_cap_acceptor_sample_tick(bs_time_t HW_device_time)
* we consider the test failed
*/
extern uint64_t total_rx_iso_packet_count;
if (IS_ENABLED(CONFIG_SAMPLE_UNICAST)) {
extern uint64_t total_unicast_rx_iso_packet_count;
extern uint64_t total_unicast_tx_iso_packet_count;
bs_trace_info_time(2, "%" PRIu64 " packets received, expected >= %i\n",
total_rx_iso_packet_count, PASS_THRESHOLD);
bs_trace_info_time(2, "%" PRIu64 " unicast packets received, expected >= %i\n",
total_unicast_tx_iso_packet_count, PASS_THRESHOLD);
bs_trace_info_time(2, "%" PRIu64 " unicast packets sent, expected >= %i\n",
total_unicast_tx_iso_packet_count, PASS_THRESHOLD);
if (total_rx_iso_packet_count >= PASS_THRESHOLD) {
PASS("cap_acceptor PASSED\n");
} else {
FAIL("cap_acceptor FAILED (Did not pass after %i seconds)\n", WAIT_TIME);
if (total_unicast_rx_iso_packet_count < PASS_THRESHOLD ||
total_unicast_tx_iso_packet_count < PASS_THRESHOLD) {
FAIL("cap_acceptor FAILED with(Did not pass after %d seconds)\n ",
WAIT_TIME);
return;
}
}
if (IS_ENABLED(CONFIG_SAMPLE_BROADCAST)) {
extern uint64_t total_broadcast_rx_iso_packet_count;
bs_trace_info_time(2, "%" PRIu64 " broadcast packets received, expected >= %i\n",
total_broadcast_rx_iso_packet_count, PASS_THRESHOLD);
if (total_broadcast_rx_iso_packet_count < PASS_THRESHOLD) {
FAIL("cap_acceptor FAILED with (Did not pass after %d seconds)\n ",
WAIT_TIME);
return;
}
}
PASS("cap_acceptor PASSED\n");
}
static const struct bst_test_instance test_sample[] = {

View file

@ -17,9 +17,10 @@ cd ${BSIM_OUT_PATH}/bin
Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_audio_samples_cap_initiator_broadcast_prj_conf \
-v=${verbosity_level} -s=${simulation_id} -d=0 -RealEncryption=1 -testid=cap_initiator
# TODO: Add CAP acceptor
Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_audio_samples_cap_acceptor_broadcast_prj_conf \
-v=${verbosity_level} -s=${simulation_id} -d=1 -RealEncryption=1 -testid=cap_acceptor
Execute ./bs_2G4_phy_v1 -v=${verbosity_level} -s=${simulation_id} \
-D=1 -sim_length=20e6 $@ -argschannel -at=40
-D=2 -sim_length=20e6 $@ -argschannel -at=40
wait_for_background_jobs #Wait for all programs in background and return != 0 if any fails

View file

@ -17,7 +17,7 @@ cd ${BSIM_OUT_PATH}/bin
Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_audio_samples_cap_initiator_unicast_prj_conf \
-v=${verbosity_level} -s=${simulation_id} -d=0 -RealEncryption=1 -testid=cap_initiator
Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_audio_samples_cap_acceptor_prj_conf \
Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_audio_samples_cap_acceptor_unicast_prj_conf \
-v=${verbosity_level} -s=${simulation_id} -d=1 -RealEncryption=1 -testid=cap_acceptor
Execute ./bs_2G4_phy_v1 -v=${verbosity_level} -s=${simulation_id} \

View file

@ -24,7 +24,13 @@ if [ "${BOARD_TS}" == "nrf5340bsim_nrf5340_cpuapp" ]; then
exe_name=bs_${BOARD_TS}_${app}_prj_conf sysbuild=1 compile
app=tests/bsim/bluetooth/audio_samples/cap/initiator \
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_initiator \
cmake_extra_args="-DCONFIG_SAMPLE_UNICAST=n" \
cmake_args="-DCONFIG_SAMPLE_UNICAST=n" \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf \
exe_name=bs_${BOARD_TS}_${app}_broadcast_prj_conf sysbuild=1 compile
app=tests/bsim/bluetooth/audio_samples/cap/acceptor \
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor \
cmake_args="-DCONFIG_SAMPLE_SCAN_SELF=y -DCONFIG_SAMPLE_UNICAST=n" \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf \
exe_name=bs_${BOARD_TS}_${app}_broadcast_prj_conf sysbuild=1 compile
@ -37,7 +43,7 @@ if [ "${BOARD_TS}" == "nrf5340bsim_nrf5340_cpuapp" ]; then
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf \
exe_name=bs_${BOARD_TS}_${app}_prj_conf sysbuild=1 compile
exe_name=bs_${BOARD_TS}_${app}_unicast_prj_conf sysbuild=1 compile
else
app=samples/bluetooth/bap_unicast_server conf_overlay=overlay-bt_ll_sw_split.conf \
exe_name=bs_${BOARD_TS}_${app}_prj_conf sysbuild=1 compile
@ -54,7 +60,13 @@ else
exe_name=bs_${BOARD_TS}_${app}_prj_conf sysbuild=1 compile
app=tests/bsim/bluetooth/audio_samples/cap/initiator \
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_initiator \
cmake_extra_args="-DCONFIG_SAMPLE_UNICAST=n" \
cmake_args="-DCONFIG_SAMPLE_UNICAST=n" \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/overlay-bt_ll_sw_split.conf \
exe_name=bs_${BOARD_TS}_${app}_broadcast_prj_conf sysbuild=1 compile
app=tests/bsim/bluetooth/audio_samples/cap/acceptor \
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor \
cmake_args="-DCONFIG_SAMPLE_SCAN_SELF=y -DCONFIG_SAMPLE_UNICAST=n" \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/overlay-bt_ll_sw_split.conf \
exe_name=bs_${BOARD_TS}_${app}_broadcast_prj_conf sysbuild=1 compile
@ -67,7 +79,7 @@ else
sample=${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor \
conf_file=${sample}/prj.conf \
conf_overlay=${sample}/overlay-bt_ll_sw_split.conf \
exe_name=bs_${BOARD_TS}_${app}_prj_conf sysbuild=1 compile
exe_name=bs_${BOARD_TS}_${app}_unicast_prj_conf sysbuild=1 compile
fi
wait_for_background_jobs