5 #include <stdio.h> /* for FILE type */
7 /* Function prototypes */
8 fsmret_t
fsm_init(fsm_t
**ppfsm
, size_t size
, unsigned int factor
,
10 fsmret_t
fsm_add_state(fsm_t
*pfsm
, unsigned int key
, state_t
*pstate
);
11 fsmret_t
fsm_free(fsm_t
*pfsm
);
12 fsmret_t
fsm_set_state(fsm_t
*pfsm
, unsigned int stkey
);
13 unsigned int fsm_get_current_state(const fsm_t
*pfsm
);
14 fsmret_t
fsm_queue_event(fsm_t
*pfsm
, unsigned int evtkey
,
15 void *pdata
, size_t size
, unsigned int prio
);
16 fsmret_t
fsm_dequeue_event(fsm_t
*pfsm
);
17 size_t fsm_get_queued_events(const fsm_t
*pfsm
);
18 fsmret_t
fsm_process_event(fsm_t
*pfsm
, unsigned int evtkey
, void *pdata
);
19 fsmret_t
fsm_validate(const fsm_t
*pfsm
);
20 void fsm_export_to_dot(const fsm_t
*pfsm
, FILE *fp
);
21 void fsm_print_states(const fsm_t
*pfsm
, FILE *fp
);
22 void fsm_mark_reachable_states(fsm_t
*pfsm
);
23 void fsm_remove_unreachable_state(fsm_t
*pfsm
, const state_t
*pstate
);
24 void fsm_minimize(fsm_t
*pfsm
);