FSM/vscode/FSM_OOP/baseFSM/FSM_public.h

57 lines
1.9 KiB
C
Raw Normal View History

2024-05-07 16:45:57 +08:00
/**
* @file FSM_public.h
* @author (dalaoshi@stu.xjtu.edu.cn)
* @brief
* @version 2.1
* @date 2024-05-07
*
* @copyright 2024
*
*/
2024-01-23 20:05:30 +08:00
#ifndef __FSM_PUBLIC_H_
#define __FSM_PUBLIC_H_
typedef unsigned int Uint16;
typedef unsigned long Uint32;
2024-01-30 16:06:02 +08:00
#define BASE_FSM(ptr) ((FSM *)(ptr))
#define BASE_PTR (FSM *)
2024-01-23 20:05:30 +08:00
typedef struct FSM FSM;
2024-01-23 20:05:30 +08:00
2024-05-07 15:52:18 +08:00
typedef struct FSMPublicFcns
{
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
}FSMPublicFcns;
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
2024-05-07 16:45:57 +08:00
#define Step(pFSM) _stepFSM((FSM *)pFSM) /**< 外界调用这个 */
#define GetData(pFSM) _getData((FSM*)pFSM) /**< 外界调用这个 */
#define SetSignal(pFSM, signal) _setSignal((FSM*)pFSM, signal) /**< 外界调用这个 */
2024-05-07 16:45:57 +08:00
#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);
2024-01-23 20:05:30 +08:00
/* ------------------------------ Data和Signals ------------------------------ */
const void *_getData(FSM* pFSM);
void _setSignal(FSM *pFSM, Uint16 signalFlag);
/* ---------------------------------- 预装载器 ---------------------------------- */
void *_preloadIn(FSM *pFSM);
2024-01-30 23:07:08 +08:00
void _preloaderGetReady(FSM *pFSM);
int _getPreloaderOverFlag(FSM *pFSM);
void _clearPreloaderOverFlag(FSM *pFSM);
2024-01-23 20:05:30 +08:00
#endif