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