封装publicfcns

This commit is contained in:
godcreator02 2024-05-07 15:52:18 +08:00
parent a5cd5ec864
commit 32a1642b19
5 changed files with 18 additions and 10 deletions

View File

@ -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);
} }
@ -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;
} }

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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");
} }