You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.3 KiB
87 lines
1.3 KiB
2 days ago
|
/*
|
||
|
* 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_ */
|