⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsmsmall.h

📁 有限状态机事件分发构件
💻 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 + -