1 #include <assert.h> /* Arg, ISO C99 only */
9 int main(int argc
, char *argv
[])
18 fsm_init(&fsm
, 2<<8, 5, 0);
20 /* Initialize states */
21 assert(state_init(&state1
, 2<<5, 2) != ST_NOMEM
);
22 assert(state_init(&state2
, 2<<5, 2) != ST_NOMEM
);
23 assert(state_init(&state3
, 2<<5, 2) != ST_NOMEM
);
24 assert(state_init(&state4
, 2<<5, 2) != ST_NOMEM
);
26 /* Construct state transition table */
27 assert(state_add_evt(state1
, 0, "e0", NULL
, state1
) != ST_NOMEM
);
28 assert(state_add_evt(state1
, 1, "e1", NULL
, state2
) != ST_NOMEM
);
29 assert(state_add_evt(state2
, 0, "e0", NULL
, state2
) != ST_NOMEM
);
30 assert(state_add_evt(state2
, 1, "e1", NULL
, state1
) != ST_NOMEM
);
31 assert(state_add_evt(state3
, 0, "e0", NULL
, state4
) != ST_NOMEM
);
34 fsm_add_state(fsm
, 1, state1
);
35 fsm_add_state(fsm
, 2, state2
);
36 fsm_add_state(fsm
, 3, state3
);
37 fsm_add_state(fsm
, 4, state4
);
39 /* Set initial state */
40 fsm_set_state(fsm
, 1);
42 /* Scan graph and mark reachable states */
43 fsm_mark_reachable_states(fsm
);
45 /* Print state transition table */
46 fsm_print_states(fsm
, stdout
);