From cb77f5164e810635816c7a783aed1adafbdd7835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=A4=A9=E6=B5=A9?= Date: Tue, 21 Apr 2026 03:05:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fsm.h | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) 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