key在28377上测试ok,运行速度上没有变化

This commit is contained in:
godcreator02 2024-04-23 19:38:43 +08:00
parent 8f259cb022
commit 89da4251ca
3 changed files with 24 additions and 21 deletions

View File

@ -6,7 +6,7 @@ include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM)
aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM SRC_FSM_OOP) aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM SRC_FSM_OOP)
#set(keytest 789) set(keytest 789)
# set(child_parent 789) # set(child_parent 789)
if(DEFINED keytest) if(DEFINED keytest)
include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest) include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest)

View File

@ -2,7 +2,7 @@
* @Author: godcreator02 qq974980621@gmail.com * @Author: godcreator02 qq974980621@gmail.com
* @Date: 2024-04-20 19:02:11 * @Date: 2024-04-20 19:02:11
* @LastEditors: godcreator02 qq974980621@gmail.com * @LastEditors: godcreator02 qq974980621@gmail.com
* @LastEditTime: 2024-04-23 17:15:11 * @LastEditTime: 2024-04-23 19:37:03
* @FilePath: \vscode\FSM_OOP\keytest\keyFSM.c * @FilePath: \vscode\FSM_OOP\keytest\keyFSM.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@ -14,19 +14,9 @@
#include "keyFSM.h" #include "keyFSM.h"
#include "keyFSM_private.h" #include "keyFSM_private.h"
/* /* -------------------------------------------------------------------------- */
/* 纯虚函数允许调用privateVars */
*/ /* -------------------------------------------------------------------------- */
static void step(KeyFSM* pFSM){
printFSM(pFSM);
_stepFSM((FSM *)pFSM);
KeyFSMData * data = pFSM->base.privateVars.data;
FSM_LOG("\t信号:%d, 计数%d ", data->out, data->countDelay);
}
static void initData(KeyFSM *pFSM){ // 必须重新实现 static void initData(KeyFSM *pFSM){ // 必须重新实现
KeyFSMData *data = (KeyFSMData *)malloc(sizeof(KeyFSMData)); KeyFSMData *data = (KeyFSMData *)malloc(sizeof(KeyFSMData));
data->countDelay = 0; data->countDelay = 0;
@ -34,14 +24,14 @@ static void initData(KeyFSM *pFSM){ // 必须重新实现
data->in = Up; data->in = Up;
data->out = Idle; data->out = Idle;
pFSM->base.privateVars.data = data; pFSM->base.data = data;
pFSM->base.signals = &data->out; pFSM->base.signals = &data->out;
} }
static void initDataLoader(KeyFSM *pFSM){ // 必须重新实现 static void initDataLoader(KeyFSM *pFSM){ // 必须重新实现
pFSM->base.preloader.shadowData = malloc(sizeof(KeyIn)); pFSM->base.privateVars.preloader.shadowData = malloc(sizeof(KeyIn));
pFSM->base.preloader.size = sizeof(KeyIn); pFSM->base.privateVars.preloader.size = sizeof(KeyIn);
} }
static void initSignals(KeyFSM *pFSM){ // 必须重新实现 static void initSignals(KeyFSM *pFSM){ // 必须重新实现
@ -85,6 +75,20 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
fcns->transitionGeneralAction = (Avoid_WARNING_General_Handlers)transitionGeneralAction; fcns->transitionGeneralAction = (Avoid_WARNING_General_Handlers)transitionGeneralAction;
} }
/* -------------------------------------------------------------------------- */
/* 其他重新实现的函数,父类已有实现,实现多态 */
/* -------------------------------------------------------------------------- */
static void step(KeyFSM* pFSM){
printFSM(pFSM);
stepBaseFSM(BASE_FSM(pFSM));
KeyFSMData * data = pFSM->base.data;
FSM_LOG("\t信号:%d, 计数%d ", data->out, data->countDelay);
}
/* /*
*/ */
@ -95,9 +99,8 @@ KeyFSM *createKeyFSM(){
pFSM = (KeyFSM *)newBaseFSM(Count_State, DEFAULT_STATE); pFSM = (KeyFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
#ifndef DSP28377 #ifndef DSP28377
pFSM->base.pureVtbl.step = (Avoid_WARNING_Overrider_Fcns)step; pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
#endif #endif
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler; pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
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;

View File

@ -263,7 +263,7 @@ const static char *stateStr[] = {
}; };
static void printFSM(KeyFSM* pFSM){ static void printFSM(KeyFSM* pFSM){
KeyFSMData* data = pFSM->base.privateVars.data; KeyFSMData* data = pFSM->base.data;
FSM_LOG("KeyFSM: "); FSM_LOG("KeyFSM: ");
FSM_LOG("%d, 当前状态:%s, \t上一个下次事件:%s \t转移:", data->countDelay, stateStr[getFSMCurState((FSM *)pFSM)], stateStr[getFSMNextState((FSM *)pFSM)]); FSM_LOG("%d, 当前状态:%s, \t上一个下次事件:%s \t转移:", data->countDelay, stateStr[getFSMCurState((FSM *)pFSM)], stateStr[getFSMNextState((FSM *)pFSM)]);
} }