1 /*
2 * Copyright (c) 2023 Codecoup
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6 #include <stddef.h>
7
8 #include <zephyr/bluetooth/audio/audio.h>
9 #include <zephyr/bluetooth/audio/lc3.h>
10 #include <zephyr/bluetooth/audio/pacs.h>
11 #include <zephyr/bluetooth/conn.h>
12 #include <zephyr/fff.h>
13 #include <zephyr/sys/util.h>
14 #include <zephyr/types.h>
15
16 #include "pacs.h"
17 #include "pacs_internal.h"
18
19 /* List of fakes used by this unit tester */
20 #define PACS_FFF_FAKES_LIST(FAKE) \
21 FAKE(bt_pacs_cap_foreach) \
22 FAKE(bt_pacs_get_available_contexts_for_conn) \
23
24 static const struct bt_audio_codec_cap lc3_codec = BT_AUDIO_CODEC_CAP_LC3(
25 BT_AUDIO_CODEC_CAP_FREQ_ANY, BT_AUDIO_CODEC_CAP_DURATION_10,
26 BT_AUDIO_CODEC_CAP_CHAN_COUNT_SUPPORT(1), 40u, 120u, 1u,
27 (BT_AUDIO_CONTEXT_TYPE_CONVERSATIONAL | BT_AUDIO_CONTEXT_TYPE_MEDIA));
28
29 DEFINE_FAKE_VOID_FUNC(bt_pacs_cap_foreach, enum bt_audio_dir, bt_pacs_cap_foreach_func_t, void *);
30 DEFINE_FAKE_VALUE_FUNC(enum bt_audio_context, bt_pacs_get_available_contexts_for_conn,
31 struct bt_conn *, enum bt_audio_dir);
32
pacs_cap_foreach_custom_fake(enum bt_audio_dir dir,bt_pacs_cap_foreach_func_t func,void * user_data)33 static void pacs_cap_foreach_custom_fake(enum bt_audio_dir dir, bt_pacs_cap_foreach_func_t func,
34 void *user_data)
35 {
36 static const struct bt_pacs_cap cap[] = {
37 {
38 &lc3_codec,
39 },
40 };
41
42 for (size_t i = 0; i < ARRAY_SIZE(cap); i++) {
43 if (func(&cap[i], user_data) == false) {
44 break;
45 }
46 }
47 }
48
mock_bt_pacs_init(void)49 void mock_bt_pacs_init(void)
50 {
51 PACS_FFF_FAKES_LIST(RESET_FAKE);
52 bt_pacs_cap_foreach_fake.custom_fake = pacs_cap_foreach_custom_fake;
53 }
54
mock_bt_pacs_cleanup(void)55 void mock_bt_pacs_cleanup(void)
56 {
57
58 }
59
bt_pacs_get_codec_cap(enum bt_audio_dir dir,const struct bt_pac_codec * codec_id)60 const struct bt_audio_codec_cap *bt_pacs_get_codec_cap(enum bt_audio_dir dir,
61 const struct bt_pac_codec *codec_id)
62 {
63 static struct bt_audio_codec_cap mock_cap;
64
65 return &mock_cap;
66 }
67