feat: 实现基础功能 #1

Merged
7iwind merged 7 commits from feature/v0.0.1 into develop 2026-04-21 15:05:53 +08:00
Showing only changes of commit e0ca05678a - Show all commits

39
fsm.h
View File

@@ -3,36 +3,59 @@
//
#ifndef QF_FSM_FSM_H
#define QF_FSM_FSM_H
#include <stdbool.h>
#include <stdint.h>
#define EVENT_QUEUE_LEN 16
#define EVENT_QUEUE_HANDLE_MAX_SIZE 32
typedef enum
{
FSM_OK,
FSM_FAIL
} fsm_result_e;
typedef struct qf_fsm_event fsm_event_t;
typedef struct qf_fsm fsm_handle_t;
typedef struct qf_fsm_transition fsm_transition_t;
typedef fsm_result_e (*fsm_cb)(void *userdata);
typedef fsm_result_e (*fsm_event_queue_init)(void *handle_ptr,
void *data_ptr,
size_t size);
typedef fsm_result_e (*fsm_event_queue_get)(void *handle_ptr,
fsm_event_t *event);
typedef fsm_result_e (*fsm_event_queue_put)(void *handle_ptr,
fsm_event_t *event);
typedef struct qf_fsm_state
{
uint16_t state;
fsm_cb on_exit;
fsm_cb on_event;
fsm_cb on_entry;
void *user_data;
} fsm_state_t;
typedef struct qf_fsm_transition
struct qf_fsm_transition
{
uint16_t state;
uint16_t event;
uint16_t next_state;
fsm_cb on_action;
} fsm_transition_t;
};
struct qf_fsm_event
{
uint16_t event;
void *user_data;
};
typedef struct qf_fsm
struct qf_fsm
{
uint16_t current_state;
fsm_state_t *p_state_list;
} fsm_handle_t;
uint16_t current_state;
uint16_t num_states;
fsm_state_t *p_state_list;
uint32_t num_trans;
fsm_transition_t *p_trans_list;
uint8_t event_queue_handle[EVENT_QUEUE_HANDLE_MAX_SIZE];
fsm_event_t event_queue[EVENT_QUEUE_LEN];
bool custom_queue;
fsm_event_queue_init event_queue_init;
fsm_event_queue_put event_queue_put;
fsm_event_queue_get event_queue_get;
};
#endif // QF_FSM_FSM_H