/* * bsp_FSM.h * * Created on: Aug 2, 2024 * Author: akeguo */ #ifndef INC_FSM_TXT_ #define INC_FSM_TXT_ #include "BHBF_ROBOT.h" #include "BSP/bsp_include.h" #include "robot_state.h" typedef enum { Manual=0, Auto, Abnormal, SetLaneChangeDistance, SetBackwardsDistance, LaneChangeMode, Forwards, Backwards, TurnLeft, TurnRight } STATE_t; typedef void (*STATE_ACTION)(void); typedef struct ACTION_MAP { STATE_t stStateID; STATE_ACTION EnterAct; STATE_ACTION RunningAct; STATE_ACTION ExitAct; } ACTION_MAP_t; extern ACTION_MAP_t actionMap[]; typedef enum { EVENT_Manual=0, EVENT_Auto, EVENT_Abnormal, EVENT_SetLaneChangeDistance, EVENT_SetBackwardsDistance, EVENT_LaneChangeMode, EVENT_Forwards, EVENT_Backwards, EVENT_TurnLeft, EVENT_TurnRight, EVENT_MAP_END } EVENT_t; //注:定义EVENT_MAP_END的目的是为了方便查表。 // //定义EVENT_MAP_t结构体类型,表示事件表属性: typedef struct EVENT_MAP { EVENT_t stEventID; STATE_t stCurState; STATE_t stNextState; } EVENT_MAP_t; extern EVENT_MAP_t eventMap[]; typedef struct FSM { STATE_t stCurState; STATE_t stNextState; ACTION_MAP_t *pActionMap; EVENT_MAP_t *pEventMap; } FSM_t; extern FSM_t RobotFSM; //定义状态机 void fsm_state_transfer(FSM_t *pFsm, EVENT_t stEventID); #endif /* INC_BSP_BSP_FSM_H_ */