Commit | Line | Data |
---|---|---|
5d7e8359 PP |
1 | /* |
2 | * SPDX-License-Identifier: GPL-2.0-only | |
3 | * | |
4 | * Copyright (C) 2020 Philippe Proulx <pproulx@efficios.com> | |
5 | */ | |
6 | ||
7 | #ifndef TESTS_LIB_CONDS_UTILS_H | |
8 | #define TESTS_LIB_CONDS_UTILS_H | |
9 | ||
10 | enum cond_trigger_func_type { | |
11 | COND_TRIGGER_FUNC_TYPE_BASIC, | |
12 | COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, | |
13 | }; | |
14 | ||
15 | enum cond_trigger_type { | |
16 | COND_TRIGGER_TYPE_PRE, | |
17 | COND_TRIGGER_TYPE_POST, | |
18 | }; | |
19 | ||
20 | typedef void (* cond_trigger_basic_func)(void); | |
21 | typedef void (* cond_trigger_run_in_comp_cls_init_func)(bt_self_component *); | |
22 | ||
23 | struct cond_trigger { | |
24 | enum cond_trigger_type type; | |
25 | enum cond_trigger_func_type func_type; | |
26 | const char *cond_id; | |
27 | const char *suffix; | |
28 | union { | |
29 | cond_trigger_basic_func basic; | |
30 | cond_trigger_run_in_comp_cls_init_func run_in_comp_cls_init; | |
31 | } func; | |
32 | }; | |
33 | ||
34 | #define COND_TRIGGER_PRE_BASIC(_cond_id, _suffix, _func) \ | |
35 | { \ | |
36 | .type = COND_TRIGGER_TYPE_PRE, \ | |
37 | .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
38 | .cond_id = _cond_id, \ | |
39 | .suffix = _suffix, \ | |
40 | .func = { \ | |
41 | .basic = _func, \ | |
42 | } \ | |
43 | } | |
44 | ||
45 | #define COND_TRIGGER_POST_BASIC(_cond_id, _suffix, _func) \ | |
46 | { \ | |
47 | .type = COND_TRIGGER_TYPE_POST, \ | |
48 | .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
49 | .cond_id = _cond_id, \ | |
50 | .suffix = _suffix, \ | |
51 | .func = { \ | |
52 | .basic = _func, \ | |
53 | } \ | |
54 | } | |
55 | ||
56 | #define COND_TRIGGER_PRE_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ | |
57 | { \ | |
58 | .type = COND_TRIGGER_TYPE_PRE, \ | |
59 | .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
60 | .cond_id = _cond_id, \ | |
61 | .suffix = _suffix, \ | |
62 | .func = { \ | |
63 | .run_in_comp_cls_init = _func, \ | |
64 | } \ | |
65 | } | |
66 | ||
67 | #define COND_TRIGGER_POST_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ | |
68 | { \ | |
69 | .type = COND_TRIGGER_TYPE_POST, \ | |
70 | .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
71 | .cond_id = _cond_id, \ | |
72 | .suffix = _suffix, \ | |
73 | .func = { \ | |
74 | .run_in_comp_cls_init = _func, \ | |
75 | } \ | |
76 | } | |
77 | ||
78 | void cond_main(int argc, const char *argv[], | |
79 | const struct cond_trigger triggers[], | |
80 | size_t trigger_count); | |
81 | ||
82 | #endif /* TESTS_LIB_CONDS_UTILS_H */ |