blob: e4727dfec78c7156a05927c8ffadedf942ee9fdf [file] [log] [blame]
/* main.c - Application main entry point */
/*
* Copyright (c) 2023 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/fff.h>
#include <zephyr/bluetooth/audio/audio.h>
#include <zephyr/bluetooth/audio/bap_lc3_preset.h>
#include <zephyr/sys/byteorder.h>
DEFINE_FFF_GLOBALS;
ZTEST_SUITE(audio_codec_test_suite, NULL, NULL, NULL, NULL, NULL);
ZTEST(audio_codec_test_suite, test_bt_audio_codec_cfg_get_freq)
{
const struct bt_bap_lc3_preset preset =
BT_BAP_LC3_UNICAST_PRESET_16_2_1(BT_AUDIO_LOCATION_FRONT_LEFT,
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
int ret;
ret = bt_audio_codec_cfg_get_freq(&preset.codec_cfg);
zassert_equal(ret, 16000u, "unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_cfg_get_frame_duration_us)
{
const struct bt_bap_lc3_preset preset =
BT_BAP_LC3_UNICAST_PRESET_48_2_2(BT_AUDIO_LOCATION_FRONT_LEFT,
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
int ret;
ret = bt_audio_codec_cfg_get_frame_duration_us(&preset.codec_cfg);
zassert_equal(ret, 10000u, "unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_cfg_get_chan_allocation_val)
{
const struct bt_bap_lc3_preset preset =
BT_BAP_LC3_UNICAST_PRESET_8_1_1(BT_AUDIO_LOCATION_FRONT_LEFT,
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
enum bt_audio_location chan_allocation = BT_AUDIO_LOCATION_FRONT_RIGHT;
int err;
err = bt_audio_codec_cfg_get_chan_allocation_val(&preset.codec_cfg, &chan_allocation);
zassert_false(err, "unexpected error %d", err);
zassert_equal(chan_allocation, BT_AUDIO_LOCATION_FRONT_LEFT,
"unexpected return value %d", chan_allocation);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_cfg_get_octets_per_frame)
{
const struct bt_bap_lc3_preset preset =
BT_BAP_LC3_UNICAST_PRESET_32_2_2(BT_AUDIO_LOCATION_FRONT_LEFT,
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
int ret;
ret = bt_audio_codec_cfg_get_octets_per_frame(&preset.codec_cfg);
zassert_equal(ret, 80u, "unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_cfg_get_frame_blocks_per_sdu)
{
const struct bt_bap_lc3_preset preset =
BT_BAP_LC3_UNICAST_PRESET_48_5_1(BT_AUDIO_LOCATION_FRONT_LEFT,
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED);
int ret;
ret = bt_audio_codec_cfg_get_frame_blocks_per_sdu(&preset.codec_cfg, true);
zassert_equal(ret, 1u, "unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_pref_context)
{
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_PREF_CONTEXT,
BT_BYTES_LIST_LE16(BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED |
BT_AUDIO_CONTEXT_TYPE_MEDIA)),
};
int ret;
ret = bt_audio_codec_meta_get_pref_context(metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, 0x0005, "unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_stream_context)
{
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_STREAM_CONTEXT,
BT_BYTES_LIST_LE16(BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED |
BT_AUDIO_CONTEXT_TYPE_MEDIA)),
};
int ret;
ret = bt_audio_codec_meta_get_stream_context(metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, 0x0005, "Unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_program_info)
{
const uint8_t expected_data[] = {'P', 'r', 'o', 'g', 'r', 'a', 'm', ' ',
'I', 'n', 'f', 'o'};
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_PROGRAM_INFO,
'P', 'r', 'o', 'g', 'r', 'a', 'm', ' ', 'I', 'n', 'f', 'o'),
};
const uint8_t *program_data;
int ret;
ret = bt_audio_codec_meta_get_program_info(metadata, ARRAY_SIZE(metadata), &program_data);
zassert_equal(ret, ARRAY_SIZE(expected_data), "Unexpected return value %d", ret);
zassert_mem_equal(expected_data, program_data, ARRAY_SIZE(expected_data));
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_stream_lang)
{
const uint32_t expected_data = sys_get_le24((uint8_t[]){'e', 'n', 'g'});
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_STREAM_LANG, 'e', 'n', 'g'),
};
int ret;
ret = bt_audio_codec_meta_get_stream_lang(metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, expected_data, "Unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_ccid_list)
{
const uint8_t expected_data[] = {0x05, 0x10, 0x15};
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_CCID_LIST, 0x05, 0x10, 0x15),
};
const uint8_t *ccid_list;
int ret;
ret = bt_audio_codec_meta_get_ccid_list(metadata, ARRAY_SIZE(metadata), &ccid_list);
zassert_equal(ret, ARRAY_SIZE(expected_data), "Unexpected return value %d", ret);
zassert_mem_equal(expected_data, ccid_list, ARRAY_SIZE(expected_data));
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_parental_rating)
{
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_PARENTAL_RATING,
BT_AUDIO_PARENTAL_RATING_AGE_10_OR_ABOVE),
};
int ret;
ret = bt_audio_codec_meta_get_parental_rating(metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, 0x07, "Unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_program_info_uri)
{
const uint8_t expected_data[] = {'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm'};
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_PROGRAM_INFO_URI,
'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm'),
};
const uint8_t *program_info_uri;
int ret;
ret = bt_audio_codec_meta_get_program_info_uri(metadata, ARRAY_SIZE(metadata),
&program_info_uri);
zassert_equal(ret, ARRAY_SIZE(expected_data), "Unexpected return value %d", ret);
zassert_mem_equal(expected_data, program_info_uri, ARRAY_SIZE(expected_data));
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_audio_active_state)
{
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_AUDIO_STATE,
BT_AUDIO_ACTIVE_STATE_ENABLED),
};
int ret;
ret = bt_audio_codec_meta_get_audio_active_state(metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, 0x01, "Unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_broadcast_audio_immediate_rendering_flag)
{
const uint8_t metadata[] = {0x01, BT_AUDIO_METADATA_TYPE_BROADCAST_IMMEDIATE};
int ret;
ret = bt_audio_codec_meta_get_broadcast_audio_immediate_rendering_flag(
metadata, ARRAY_SIZE(metadata));
zassert_equal(ret, 0, "Unexpected return value %d", ret);
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_extended)
{
const uint8_t expected_data[] = {0x00, 0x01, 0x02, 0x03};
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_EXTENDED, 0x00, 0x01, 0x02, 0x03),
};
const uint8_t *extended_meta;
int ret;
ret = bt_audio_codec_meta_get_extended(metadata, ARRAY_SIZE(metadata), &extended_meta);
zassert_equal(ret, ARRAY_SIZE(expected_data), "Unexpected return value %d", ret);
zassert_mem_equal(expected_data, extended_meta, ARRAY_SIZE(expected_data));
}
ZTEST(audio_codec_test_suite, test_bt_audio_codec_meta_get_vendor)
{
const uint8_t expected_data[] = {0x00, 0x01, 0x02, 0x03};
const uint8_t metadata[] = {
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_VENDOR, 0x00, 0x01, 0x02, 0x03),
};
const uint8_t *vendor_meta;
int ret;
ret = bt_audio_codec_meta_get_vendor(metadata, ARRAY_SIZE(metadata), &vendor_meta);
zassert_equal(ret, ARRAY_SIZE(expected_data), "Unexpected return value %d", ret);
zassert_mem_equal(expected_data, vendor_meta, ARRAY_SIZE(expected_data));
}