2024-01-23 20:05:30 +08:00
|
|
|
#ifndef __TEMPLATE_FSM_H_
|
|
|
|
#define __TEMPLATE_FSM_H_
|
|
|
|
|
2024-04-23 19:35:16 +08:00
|
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
/* 提前做类型声明 */
|
|
|
|
/* -------------------------------------------------------------------------- */
|
2024-01-30 23:00:38 +08:00
|
|
|
|
|
|
|
|
2024-04-23 19:35:16 +08:00
|
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
/* 自定义数据和信号 */
|
|
|
|
/* -------------------------------------------------------------------------- */
|
2024-04-23 21:18:30 +08:00
|
|
|
enum TemplateFSMSignals{
|
|
|
|
Signal_A = 0,
|
|
|
|
Signal_B,
|
|
|
|
|
|
|
|
Idle_Signal = 127,
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct _templateFSMSignalsBits
|
2024-04-19 15:58:28 +08:00
|
|
|
{
|
2024-04-23 21:18:30 +08:00
|
|
|
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;
|
|
|
|
|
|
|
|
|
2024-04-19 15:58:28 +08:00
|
|
|
|
2024-04-23 17:37:25 +08:00
|
|
|
typedef struct _templateFSMExternalData
|
|
|
|
{
|
|
|
|
int arrindex;
|
|
|
|
int x;
|
|
|
|
}TemplateFSMExternalData;
|
|
|
|
|
|
|
|
typedef struct _templateFSMInnerData
|
2024-01-30 23:00:38 +08:00
|
|
|
{
|
|
|
|
int y1;
|
|
|
|
int inner1;
|
2024-04-23 17:37:25 +08:00
|
|
|
}TemplateFSMInnerData;
|
|
|
|
|
2024-04-23 19:35:16 +08:00
|
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
/* 下面的改个名字就行了 */
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
#define TemplateFSM_Input(pFSM) ((TemplateFSMExternalData *)_preloadIn((FSM *)pFSM))
|
2024-04-23 17:37:25 +08:00
|
|
|
|
|
|
|
typedef struct _templateFSMData
|
|
|
|
{
|
|
|
|
TemplateFSMExternalData external;
|
|
|
|
TemplateFSMInnerData inner;
|
2024-01-23 20:05:30 +08:00
|
|
|
}TemplateFSMData;
|
|
|
|
|
|
|
|
typedef struct _TemplateFSM TemplateFSM;
|
|
|
|
TemplateFSM *createTemplateFSM();
|
|
|
|
|
2024-04-23 21:18:30 +08:00
|
|
|
void setTemplateFSMSignals(TemplateFSM *pFSM, enum TemplateFSMSignals Signal);
|
2024-01-23 20:05:30 +08:00
|
|
|
|
|
|
|
|
|
|
|
#endif
|