📄 fsmsmall.h
字号:
/*****************************************************************************Filename : FsmSmall.H 事件分发和状态转换头文件* Programmer : Haven**Date : 2007.9.24**DESCRIPTION: 定义了预留的事件信号,状态转换和初始转换的宏定义。***************************************************************************/#ifndef FsmSmall_h#define FsmSmall_h#include "DATA_CPU.H" #define Q_REENTRANT reentrant//下面是被占用的事件信号#define Q_EMPTY_SIG_ 0#define Q_ENTRY_SIG 1 /**< signal for coding entry actions */#define Q_EXIT_SIG 2 /**< signal for coding exit actions */#define Q_INIT_SIG 3 /**< signal for coding nested initial transitions */#define Q_TIMEOUT_SIG 4 /**< signal used by time events */#define Q_USER_SIG 5 /**< first signal that can be used in user applications *///用户信号从这开始#define Q_TOP_INIT_SIG Q_INIT_SIGtypedef INT8U QSignal;typedef INT8U QEvent;//// 根据事件的多少,可以改变QEvent的长度//定义结构(事件信号和状态函数指针)typedef struct QFsmTag QFsm;typedef void (*QState)(QFsm *me);struct QFsmTag { QEvent Sig_; /**< currently processed event in the FSM (protected) */ QState State__; /**< current active state of the FSM (private) */};//宏定义Q_SIG(),事件信号#define Q_SIG(me_) (((QFsm *)(me_))->Sig_)//宏定义QFsm_ctor(),构造函数#define QFsm_ctor(me_, initial_) \ (((QFsm *)me_)->State__ = (QState)(initial_), \ Q_SIG(me_) = (QSignal)Q_TOP_INIT_SIG)#define QFsm_getState_(me_) ((QState const)(me_)->State__)//宏定义Q_INIT()用于初始转换#define Q_INIT(target_) (((QFsm *)me)->state__ = (QState)(target_))//宏定义Q_TRAN()用于状态转换,指向函数的指针被改变#define Q_TRAN(target_) \ (((QFsm *)me)->State__ = (QState)(target_), \ ((QFsm *)me)->Sig_ = (QSignal)0)//QFsm_dispatch()用于事件分发,执行当前状态函数,分发事件,//同时如发生状态转换,源状态做退出动作,目的状态做进入动作void QFsm_dispatch(QFsm *me) Q_REENTRANT; #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -