key在28377上测试ok,运行速度上没有变化
This commit is contained in:
parent
8f259cb022
commit
89da4251ca
|
@ -6,7 +6,7 @@ include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM)
|
|||
aux_source_directory(${PROJECT_SOURCE_DIR}/FSM_OOP/baseFSM SRC_FSM_OOP)
|
||||
|
||||
|
||||
#set(keytest 789)
|
||||
set(keytest 789)
|
||||
# set(child_parent 789)
|
||||
if(DEFINED keytest)
|
||||
include_directories(${PROJECT_SOURCE_DIR}/FSM_OOP/keytest)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: godcreator02 qq974980621@gmail.com
|
||||
* @Date: 2024-04-20 19:02:11
|
||||
* @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
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
@ -14,19 +14,9 @@
|
|||
#include "keyFSM.h"
|
||||
#include "keyFSM_private.h"
|
||||
|
||||
/*
|
||||
重载函数,有些是纯虚的必须重新实现,有些可以不重新实现直接用父类的
|
||||
*/
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* 纯虚函数,允许调用privateVars */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
static void initData(KeyFSM *pFSM){ // 必须重新实现
|
||||
KeyFSMData *data = (KeyFSMData *)malloc(sizeof(KeyFSMData));
|
||||
data->countDelay = 0;
|
||||
|
@ -34,14 +24,14 @@ static void initData(KeyFSM *pFSM){ // 必须重新实现
|
|||
data->in = Up;
|
||||
data->out = Idle;
|
||||
|
||||
pFSM->base.privateVars.data = data;
|
||||
pFSM->base.data = data;
|
||||
|
||||
pFSM->base.signals = &data->out;
|
||||
}
|
||||
|
||||
static void initDataLoader(KeyFSM *pFSM){ // 必须重新实现
|
||||
pFSM->base.preloader.shadowData = malloc(sizeof(KeyIn));
|
||||
pFSM->base.preloader.size = sizeof(KeyIn);
|
||||
pFSM->base.privateVars.preloader.shadowData = malloc(sizeof(KeyIn));
|
||||
pFSM->base.privateVars.preloader.size = sizeof(KeyIn);
|
||||
}
|
||||
|
||||
static void initSignals(KeyFSM *pFSM){ // 必须重新实现
|
||||
|
@ -85,6 +75,20 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
|
|||
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);
|
||||
|
||||
#ifndef DSP28377
|
||||
pFSM->base.pureVtbl.step = (Avoid_WARNING_Overrider_Fcns)step;
|
||||
pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
|
||||
#endif
|
||||
|
||||
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
||||
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
||||
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
||||
|
|
|
@ -263,7 +263,7 @@ const static char *stateStr[] = {
|
|||
};
|
||||
|
||||
static void printFSM(KeyFSM* pFSM){
|
||||
KeyFSMData* data = pFSM->base.privateVars.data;
|
||||
KeyFSMData* data = pFSM->base.data;
|
||||
FSM_LOG("KeyFSM: ");
|
||||
FSM_LOG("%d, 当前状态:%s, \t上一个下次事件:%s \t转移:", data->countDelay, stateStr[getFSMCurState((FSM *)pFSM)], stateStr[getFSMNextState((FSM *)pFSM)]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue