60 lines
2.0 KiB
C
60 lines
2.0 KiB
C
/**
|
|
* @file FSM_public.h
|
|
* @author 天神 (dalaoshi@stu.xjtu.edu.cn)
|
|
* @brief
|
|
* @version 2.1
|
|
* @date 2024-05-07
|
|
*
|
|
* @copyright 天神创意无限公司 2024
|
|
*
|
|
*/
|
|
#ifndef __FSM_PUBLIC_H_
|
|
#define __FSM_PUBLIC_H_
|
|
|
|
typedef unsigned int Uint16;
|
|
typedef unsigned long Uint32;
|
|
|
|
#define BASE_FSM(ptr) ((FSM *)(ptr))
|
|
#define BASE_PTR (FSM *)
|
|
|
|
typedef struct FSM FSM;
|
|
|
|
typedef struct FSMPublicFcns
|
|
{
|
|
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
|
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
|
|
|
}FSMPublicFcns;
|
|
|
|
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
|
|
#define Step(pFSM) _stepFSM((FSM *)pFSM) /**< 外界调用这个 */
|
|
#define GetData(pFSM) _getData((FSM*)pFSM) /**< 外界调用这个 */
|
|
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) /**< 外界调用这个 */
|
|
|
|
|
|
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM); /**< @deprecated */
|
|
#define GetPreloaderOverFlag(pFSM) _getPreloaderOverFlag((FSM *)pFSM) /**< @deprecated */
|
|
#define ClearPreloaderOverFlag(pFSM) _clearPreloaderOverFlag((FSM *)pFSM) /**< @deprecated */
|
|
|
|
|
|
void _stepFSM(FSM *pFSM);
|
|
/* --------------------------------- 状态机信息获取 -------------------------------- */
|
|
int getFSMCurState(FSM *pFSM);
|
|
int getFSMNextState(FSM *pFSM);
|
|
void setChildNum(FSM *pFSM, int num);
|
|
void registerChildFSM(FSM *parent, FSM *child, int index);
|
|
|
|
/* ------------------------------ Data和Signals ------------------------------ */
|
|
const void *_getData(FSM* pFSM);
|
|
void _setSignal(FSM *pFSM, Uint16 signalFlag);
|
|
|
|
/* ---------------------------------- 预装载器 ---------------------------------- */
|
|
void *_preloadIn(FSM *pFSM);
|
|
void _preloaderGetReady(FSM *pFSM);
|
|
int _getPreloaderOverFlag(FSM *pFSM);
|
|
void _clearPreloaderOverFlag(FSM *pFSM);
|
|
|
|
|
|
|
|
#endif
|