libcortex
Event loop library following a "batteries included" approach
Loading...
Searching...
No Matches
src
sm.h
1
#ifndef CRTX_SM_H
2
#define CRTX_SM_H
3
4
#ifdef __cplusplus
5
extern
"C"
{
6
#endif
7
8
/*
9
* Mario Kicherer (dev@kicherer.org)
10
*
11
*/
12
13
enum
crtx_sms_event {
14
CRTX_SMSE_ENTER,
15
CRTX_SMSE_TRIGGER,
16
CRTX_SMSE_LEAVE,
17
};
18
19
struct
crtx_sm
;
20
struct
crtx_sm_state
;
21
22
typedef
int (*crtx_sm_callback)(
struct
crtx_sm_state
*sms,
enum
crtx_sms_event event);
23
typedef
int (*crtx_sm_release_callback)(
struct
crtx_sm
*sm);
24
25
struct
crtx_sm_state
{
26
char
*name;
27
28
crtx_sm_callback enter;
29
crtx_sm_callback trigger;
30
crtx_sm_callback leave;
31
32
struct
crtx_sm
*sm;
33
};
34
35
#define CRTX_SMF_RELEASE (1<<0)
36
37
struct
crtx_sm
{
38
struct
crtx_sm_state
*cur_state;
39
40
_Atomic
unsigned
int
n_schedules;
41
crtx_sm_release_callback release_cb;
42
int
flags;
43
44
void
*userdata;
45
};
46
47
int
crtx_change_state(
struct
crtx_sm
*sm,
struct
crtx_sm_state
*sms);
48
int
crtx_release_sm(
struct
crtx_sm
*sm);
49
50
#ifdef __cplusplus
51
}
52
#endif
53
54
#endif
crtx_sm_state
Definition
sm.h:25
crtx_sm
Definition
sm.h:37
Generated by
1.9.8