Use temp hack in htable_free_*()
[eleutheria.git] / misc / fsm / main.c
bloba4a92c3e82206016ed948f2bd3fa26029a4e93a3
1 #include <stdio.h>
2 #include <stdlib.h>
4 #include "fsm.h"
5 #include "states.h"
6 #include "types.h"
8 void foo1(void *data);
9 void foo2(void *data);
11 void foo1(void *data) { printf("foo1()\n"); }
12 void foo2(void *data) { printf("foo2()\n"); }
14 #define EVENT_ID 1
15 #define STATE1_ID 1
16 #define STATE2_ID 2
18 int main(void)
20 state_t *state1, *state2;
21 fsm_t *fsm;
23 /* Initialize states */
24 state_init(&state1, 2<<5, 2);
25 state_init(&state2, 2<<5, 2);
27 /* Construct state transition table */
28 state_add_evt(state1, EVENT_ID, "event1", foo1, state2);
29 state_add_evt(state2, EVENT_ID, "event2", foo2, state1);
31 state_print_evts(state1);
32 state_print_evts(state2);
34 /* Initialize fsm */
35 fsm_init(&fsm, 2<<5, 2);
37 fsm_add_state(fsm, STATE1_ID, state1);
38 fsm_add_state(fsm, STATE2_ID, state2);
40 fsm_print_states(fsm);
42 state_free(state1);
43 state_free(state2);
44 fsm_free(fsm);
46 printf("END\n");
48 return EXIT_SUCCESS;