#ifndef __TEMPLATE_FSM_H_ #define __TEMPLATE_FSM_H_ /* -------------------------------------------------------------------------- */ /* 提前做类型声明 */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* 自定义数据和信号 */ /* -------------------------------------------------------------------------- */ enum TemplateFSMSignals{ Signal_A = 0, Signal_B, Idle_Signal = 127, }; struct _templateFSMSignalsBits { unsigned char signalA : 1; unsigned char signalB : 1; }; union _templateFSMSignals { unsigned int all; struct _templateFSMSignalsBits bits; }; typedef struct _templateFSMSignalsRegs { union _templateFSMSignals signals; unsigned int lastTriggeredSignal; }TemplateFSMSignalRegs; typedef struct _templateFSMExternalData { int arrindex; int x; }TemplateFSMExternalData; typedef struct _templateFSMInnerData { int y1; int inner1; }TemplateFSMInnerData; /* -------------------------------------------------------------------------- */ /* 下面的改个名字就行了 */ /* -------------------------------------------------------------------------- */ #define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM)) typedef struct _templateFSMData { TemplateFSMExternalData external; TemplateFSMInnerData inner; }TemplateFSMData; typedef struct _TemplateFSM TemplateFSM; TemplateFSM *createTemplateFSM(); void setTemplateFSMSignals(TemplateFSM *pFSM, enum TemplateFSMSignals Signal); #endif