1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
32
35
36
37
38
39
40
41
42
43
44
45
46
53
54
55
56
57
58
59
60
61
62
63
64
65
72
73
74
75
76
77
78
79
80
81
82
83
91
92
101
103
104
105
106
107
108
109
110
111
112
113
114
116
117
118
119
120
121
122
123
124
125
126
128
129
136
137
138
/* ... */
#ifndef STATE_MACHINE_H
#define STATE_MACHINE_H
/* ... */
#define SM_STATE(machine, state) \
static void sm_ ## machine ## _ ## state ## _Enter(STATE_MACHINE_DATA *sm, \
int global)...
/* ... */
#define SM_ENTRY(machine, state) \
if (!global || sm->machine ## _state != machine ## _ ## state) { \
sm->changed = TRUE; \
wpa_printf(MSG_DEBUG, STATE_MACHINE_DEBUG_PREFIX ": " #machine \
" entering state " #state); \
}{...} \
sm->machine ## _state = machine ## _ ## state;...
/* ... */
#define SM_ENTRY_M(machine, _state, data) \
if (!global || sm->data ## _ ## state != machine ## _ ## _state) { \
sm->changed = TRUE; \
wpa_printf(MSG_DEBUG, STATE_MACHINE_DEBUG_PREFIX ": " \
#machine " entering state " #_state); \
}{...} \
sm->data ## _ ## state = machine ## _ ## _state;...
/* ... */
#define SM_ENTRY_MA(machine, _state, data) \
if (!global || sm->data ## _ ## state != machine ## _ ## _state) { \
sm->changed = TRUE; \
wpa_printf(MSG_DEBUG, STATE_MACHINE_DEBUG_PREFIX ": " MACSTR " " \
#machine " entering state " #_state"\n", \
MAC2STR(STATE_MACHINE_ADDR)); \
}{...} \
sm->data ## _ ## state = machine ## _ ## _state;...
/* ... */
#define SM_ENTER(machine, state) \
sm_ ## machine ## _ ## state ## _Enter(sm, 0)...
/* ... */
#define SM_ENTER_GLOBAL(machine, state) \
sm_ ## machine ## _ ## state ## _Enter(sm, 1)...
/* ... */
#define SM_STEP(machine) \
static void sm_ ## machine ## _Step(STATE_MACHINE_DATA *sm)...
/* ... */
#define SM_STEP_RUN(machine) sm_ ## machine ## _Step(sm)9 defines
/* ... */
#endif