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