封装publicfcns
This commit is contained in:
parent
a5cd5ec864
commit
32a1642b19
|
@ -7,6 +7,11 @@
|
||||||
#include "FSM_protected.h"
|
#include "FSM_protected.h"
|
||||||
#include "FSM_public.h"
|
#include "FSM_public.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
/* private函数 */
|
/* private函数 */
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
|
@ -116,7 +121,7 @@ void resetBaseFSM(FSM *pFSM)
|
||||||
}
|
}
|
||||||
|
|
||||||
void _stepFSM(FSM *pFSM){
|
void _stepFSM(FSM *pFSM){
|
||||||
pFSM->step(pFSM);
|
pFSM->publicFcns.step(pFSM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -200,7 +205,7 @@ FSM* newBaseFSM(int numState, int defaultState){
|
||||||
|
|
||||||
FSM *pFSM = calloc(1, sizeof(FSM));
|
FSM *pFSM = calloc(1, sizeof(FSM));
|
||||||
pFSM->privateVars = newFMSPrivateVars(numState, defaultState);
|
pFSM->privateVars = newFMSPrivateVars(numState, defaultState);
|
||||||
|
|
||||||
FSMPureVtbl pureVtbl = {
|
FSMPureVtbl pureVtbl = {
|
||||||
.setupHandler = NULL,
|
.setupHandler = NULL,
|
||||||
.initData = NULL,
|
.initData = NULL,
|
||||||
|
@ -211,8 +216,8 @@ FSM* newBaseFSM(int numState, int defaultState){
|
||||||
};
|
};
|
||||||
pFSM->pureVtbl = pureVtbl;
|
pFSM->pureVtbl = pureVtbl;
|
||||||
|
|
||||||
pFSM->step = stepBaseFSM;
|
pFSM->publicFcns.step = resetBaseFSM;
|
||||||
pFSM->reset = resetBaseFSM;
|
pFSM->publicFcns.reset = resetBaseFSM;
|
||||||
|
|
||||||
return pFSM;
|
return pFSM;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,10 +116,7 @@ typedef struct FSMPureVtbl {
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
typedef struct FSM
|
typedef struct FSM
|
||||||
{
|
{
|
||||||
// public functions
|
FSMPublicFcns publicFcns;
|
||||||
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
|
||||||
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
|
||||||
|
|
||||||
// protected
|
// protected
|
||||||
FSMPureVtbl pureVtbl;
|
FSMPureVtbl pureVtbl;
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,13 @@ typedef unsigned long Uint32;
|
||||||
|
|
||||||
typedef struct FSM FSM;
|
typedef struct FSM FSM;
|
||||||
|
|
||||||
|
typedef struct FSMPublicFcns
|
||||||
|
{
|
||||||
|
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
||||||
|
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
||||||
|
|
||||||
|
}FSMPublicFcns;
|
||||||
|
|
||||||
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
|
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
|
||||||
#define Step(pFSM) _stepFSM((FSM *)pFSM)
|
#define Step(pFSM) _stepFSM((FSM *)pFSM)
|
||||||
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM);
|
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM);
|
||||||
|
|
|
@ -110,7 +110,7 @@ TemplateFSM *createTemplateFSM(){
|
||||||
pFSM = (TemplateFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
|
pFSM = (TemplateFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
|
||||||
|
|
||||||
// 重新实现的函数
|
// 重新实现的函数
|
||||||
pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
|
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
|
||||||
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
||||||
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
||||||
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
||||||
|
|
|
@ -100,7 +100,6 @@ static void actionFcn(exit, E)()
|
||||||
/* 转移函数 */
|
/* 转移函数 */
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
static void transitionGeneralAction(FSM pFSM){
|
static void transitionGeneralAction(FSM pFSM){
|
||||||
|
|
||||||
FSM_LOG("general");
|
FSM_LOG("general");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue