FSM/vscode/FSM_OOP/template/templateFSM_private.h

119 lines
2.6 KiB
C
Raw Normal View History

2024-01-23 20:05:30 +08:00
#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;
/* -------------------------------------------------------------------------- */
/* 状态 */
/* -------------------------------------------------------------------------- */
2024-01-23 20:05:30 +08:00
typedef enum _State
{
Idle,
D,
E,
Count_State,
} State;
#define DEFAULT_STATE E
/* -------------------------------------------------------------------------- */
/* 下一个状态选择函数 */
/* -------------------------------------------------------------------------- */
static void selectNextStateFcn(D)(TemplateFSMData *data, TemplateFSMSignals *signals){
}
/* -------------------------------------------------------------------------- */
/* 对应的 action, exit, during 函数 */
/* -------------------------------------------------------------------------- */
2024-01-23 20:05:30 +08:00
static void actionFcn(enter, D)()
{
FSM_LOG(" enterD ");
2024-01-23 20:05:30 +08:00
}
static void actionFcn(during, D)()
{
FSM_LOG(" duringD ");
2024-01-23 20:05:30 +08:00
}
static void actionFcn(exit, D)()
{
FSM_LOG(" exitD ");
2024-01-23 20:05:30 +08:00
}
static void actionFcn(enter, E)()
{
FSM_LOG(" enterE ");
2024-01-23 20:05:30 +08:00
}
static void actionFcn(during, E)()
{
FSM_LOG(" duringE ");
2024-01-23 20:05:30 +08:00
}
static void actionFcn(exit, E)()
{
FSM_LOG(" exitE ");
2024-01-23 20:05:30 +08:00
}
/* -------------------------------------------------------------------------- */
/* 转移函数 */
/* -------------------------------------------------------------------------- */
static void transitionHandler(Idle, D)()
2024-01-23 20:05:30 +08:00
{
FSM_LOG(" Idle2D ");
2024-01-23 20:05:30 +08:00
}
static void delayHanlder(Idle, D)(TemplateFSMData *data){
FSM_LOG(" DelayIdle2D");
}
static State transitionHandler(Idle, E)()
2024-01-23 20:05:30 +08:00
{
FSM_LOG(" Idle2E ");
2024-01-23 20:05:30 +08:00
}
static State transitionHandler(D, E)()
2024-01-23 20:05:30 +08:00
{
FSM_LOG(" D2E ");
2024-01-23 20:05:30 +08:00
}
static State transitionHandler(E, D)()
2024-01-23 20:05:30 +08:00
{
FSM_LOG(" E2D ");
2024-01-23 20:05:30 +08:00
}
/*
begin
*/
const static char *stateStr[] = {
"Idle",
"D",
"E",
};
2024-01-23 20:05:30 +08:00
static void printFSM(TemplateFSM* pFSM){
FSM_LOG(" \tTemplateFSM: ");
FSM_LOG("下次状态:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", stateStr[getFSMNextState((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
2024-01-23 20:05:30 +08:00
}
#endif