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 | ||
486428e8 SM |
10 | enum cond_trigger_func_type |
11 | { | |
12 | COND_TRIGGER_FUNC_TYPE_BASIC, | |
13 | COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, | |
5d7e8359 PP |
14 | }; |
15 | ||
486428e8 SM |
16 | enum cond_trigger_type |
17 | { | |
18 | COND_TRIGGER_TYPE_PRE, | |
19 | COND_TRIGGER_TYPE_POST, | |
5d7e8359 PP |
20 | }; |
21 | ||
486428e8 SM |
22 | typedef void (*cond_trigger_basic_func)(void); |
23 | typedef void (*cond_trigger_run_in_comp_cls_init_func)(bt_self_component *); | |
5d7e8359 | 24 | |
486428e8 SM |
25 | struct cond_trigger |
26 | { | |
27 | enum cond_trigger_type type; | |
28 | enum cond_trigger_func_type func_type; | |
29 | const char *cond_id; | |
30 | const char *suffix; | |
31 | union | |
32 | { | |
33 | cond_trigger_basic_func basic; | |
34 | cond_trigger_run_in_comp_cls_init_func run_in_comp_cls_init; | |
35 | } func; | |
5d7e8359 PP |
36 | }; |
37 | ||
486428e8 SM |
38 | #define COND_TRIGGER_PRE_BASIC(_cond_id, _suffix, _func) \ |
39 | { \ | |
40 | .type = COND_TRIGGER_TYPE_PRE, .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
41 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
42 | .basic = _func, \ | |
43 | } \ | |
44 | } | |
5d7e8359 | 45 | |
486428e8 SM |
46 | #define COND_TRIGGER_POST_BASIC(_cond_id, _suffix, _func) \ |
47 | { \ | |
48 | .type = COND_TRIGGER_TYPE_POST, .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
49 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
50 | .basic = _func, \ | |
51 | } \ | |
52 | } | |
5d7e8359 | 53 | |
486428e8 SM |
54 | #define COND_TRIGGER_PRE_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ |
55 | { \ | |
56 | .type = COND_TRIGGER_TYPE_PRE, .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
57 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
58 | .run_in_comp_cls_init = _func, \ | |
59 | } \ | |
60 | } | |
5d7e8359 | 61 | |
486428e8 SM |
62 | #define COND_TRIGGER_POST_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ |
63 | { \ | |
64 | .type = COND_TRIGGER_TYPE_POST, .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
65 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
66 | .run_in_comp_cls_init = _func, \ | |
67 | } \ | |
68 | } | |
5d7e8359 | 69 | |
486428e8 SM |
70 | void cond_main(int argc, const char *argv[], const struct cond_trigger triggers[], |
71 | size_t trigger_count); | |
5d7e8359 PP |
72 | |
73 | #endif /* TESTS_LIB_CONDS_UTILS_H */ |