39 lines
660 B
C
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
|