Dummy commit to test new ssh key
[eleutheria.git] / fsm / dbg_fsm.c
blobd41e42d63f85d25c56c6599b544dd8709167f169
1 #include <assert.h> /* Arg, ISO C99 only */
2 #include <stdio.h>
3 #include <stdlib.h>
5 #include "fsm.h"
6 #include "states.h"
7 #include "types.h"
9 int main(int argc, char *argv[])
11 state_t *state1;
12 state_t *state2;
13 state_t *state3;
14 state_t *state4;
15 fsm_t *fsm;
17 /* Initialize fsm */
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);
33 /* Add states */
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);
48 /* Free memory */
49 fsm_free(fsm);
51 return EXIT_SUCCESS;