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:
parent
2af4ae17a6
commit
d578c598eb
15 changed files with 912 additions and 41 deletions
|
@ -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
|
||||
|
|
4
tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig
Normal file
4
tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig
Normal 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"
|
|
@ -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[] = {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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} \
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue