Files
qf-fsm/fsm.h
2026-04-21 03:05:57 +08:00

39 lines
660 B
C

//
// Created by Hydro on 2026/4/21.
//
#ifndef QF_FSM_FSM_H
#define QF_FSM_FSM_H
#include <stdint.h>
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