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