diff --git a/fsm.h b/fsm.h index 4e6941e..3851344 100644 --- a/fsm.h +++ b/fsm.h @@ -3,8 +3,36 @@ // #ifndef QF_FSM_FSM_H #define QF_FSM_FSM_H - -struct qf_fsm +#include +typedef enum { + FSM_OK, + FSM_FAIL +} fsm_result_e; + +typedef fsm_result_e (*fsm_cb)(void *userdata); +typedef struct qf_fsm_state +{ + uint16_t state; + fsm_cb on_exit; + fsm_cb on_entry; + void *user_data; +} fsm_state_t; +typedef struct qf_fsm_transition +{ + uint16_t state; + uint16_t event; + fsm_cb on_action; +} fsm_transition_t; +struct qf_fsm_event +{ + uint16_t event; + void *user_data; }; +typedef struct qf_fsm +{ + uint16_t current_state; + fsm_state_t *p_state_list; + +} fsm_handle_t; #endif // QF_FSM_FSM_H