119 lines
2.6 KiB
C
119 lines
2.6 KiB
C
#ifndef __TEMPLATE_PRIVATE_FSM_H_
|
|
#define __TEMPLATE_PRIVATE_FSM_H_
|
|
|
|
#include "FSM_protected.h"
|
|
#include "templateFSM.h"
|
|
#include <stdio.h>
|
|
|
|
|
|
/*
|
|
继承基类
|
|
*/
|
|
typedef struct _TemplateFSM
|
|
{
|
|
// 继承父类
|
|
FSM base;
|
|
}TemplateFSM;
|
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* 状态 */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
|
|
typedef enum _State
|
|
{
|
|
Idle,
|
|
D,
|
|
E,
|
|
|
|
Count_State,
|
|
} State;
|
|
#define DEFAULT_STATE E
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* 下一个状态选择函数 */
|
|
/* -------------------------------------------------------------------------- */
|
|
static void selectNextStateFcn(D)(TemplateFSMData *data, TemplateFSMSignals *signals){
|
|
|
|
}
|
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* 对应的 action, exit, during 函数 */
|
|
/* -------------------------------------------------------------------------- */
|
|
static void actionFcn(enter, D)()
|
|
{
|
|
FSM_LOG(" enterD ");
|
|
}
|
|
static void actionFcn(during, D)()
|
|
{
|
|
FSM_LOG(" duringD ");
|
|
}
|
|
static void actionFcn(exit, D)()
|
|
{
|
|
FSM_LOG(" exitD ");
|
|
}
|
|
|
|
static void actionFcn(enter, E)()
|
|
{
|
|
FSM_LOG(" enterE ");
|
|
}
|
|
static void actionFcn(during, E)()
|
|
{
|
|
FSM_LOG(" duringE ");
|
|
}
|
|
static void actionFcn(exit, E)()
|
|
{
|
|
FSM_LOG(" exitE ");
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* 转移函数 */
|
|
/* -------------------------------------------------------------------------- */
|
|
static void transitionHandler(Idle, D)()
|
|
{
|
|
FSM_LOG(" Idle2D ");
|
|
}
|
|
|
|
static void delayHanlder(Idle, D)(TemplateFSMData *data){
|
|
FSM_LOG(" DelayIdle2D");
|
|
}
|
|
|
|
static State transitionHandler(Idle, E)()
|
|
{
|
|
FSM_LOG(" Idle2E ");
|
|
}
|
|
|
|
static State transitionHandler(D, E)()
|
|
{
|
|
FSM_LOG(" D2E ");
|
|
}
|
|
|
|
static State transitionHandler(E, D)()
|
|
{
|
|
FSM_LOG(" E2D ");
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
用户自定义事件选择逻辑—————————————————begin
|
|
*/
|
|
const static char *stateStr[] = {
|
|
"Idle",
|
|
"D",
|
|
"E",
|
|
};
|
|
|
|
static void printFSM(TemplateFSM* pFSM){
|
|
FSM_LOG(" \tTemplateFSM: ");
|
|
FSM_LOG("下次状态:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", stateStr[getFSMNextState((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
|
|
}
|
|
|
|
|
|
#endif
|