把信号清零放到step里做
This commit is contained in:
parent
6503f3c126
commit
bdd83a3cd1
|
@ -47,6 +47,7 @@ void stepBaseFSM(FSM *pFSM)
|
||||||
{
|
{
|
||||||
preload(pFSM);
|
preload(pFSM);
|
||||||
setEvent(pFSM);
|
setEvent(pFSM);
|
||||||
|
pFSM->vtbl.resetSignals(pFSM);
|
||||||
|
|
||||||
FSMHandler *fcns = &pFSM->privateVars.fcns;
|
FSMHandler *fcns = &pFSM->privateVars.fcns;
|
||||||
int curState = pFSM->privateVars.curState;
|
int curState = pFSM->privateVars.curState;
|
||||||
|
|
|
@ -22,6 +22,7 @@ typedef struct _FSMVtbl {
|
||||||
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
|
||||||
void (*initData)(FSM *pFSM); // 子类必须重新实现
|
void (*initData)(FSM *pFSM); // 子类必须重新实现
|
||||||
void (*initSignals)(FSM *pFSM); // 子类必须重新实现
|
void (*initSignals)(FSM *pFSM); // 子类必须重新实现
|
||||||
|
void (*resetSignals)(FSM *pFSM); // 子类必须重新实现
|
||||||
void (*setupHandler)(FSMHandler *fcns); // 子类必须重新实现
|
void (*setupHandler)(FSMHandler *fcns); // 子类必须重新实现
|
||||||
void (*initDataLoader)(FSM *pFSM); // 子类必须重新实现
|
void (*initDataLoader)(FSM *pFSM); // 子类必须重新实现
|
||||||
}FSMVtbl;
|
}FSMVtbl;
|
||||||
|
|
|
@ -22,7 +22,7 @@ int main(){
|
||||||
if(i == 10){
|
if(i == 10){
|
||||||
TemplateFSM_Signals(pFSM)->signalA = 1;
|
TemplateFSM_Signals(pFSM)->signalA = 1;
|
||||||
}
|
}
|
||||||
if(i == 12){
|
if(i == 11){
|
||||||
TemplateFSM_Signals(pFSM)->signalB = 1;
|
TemplateFSM_Signals(pFSM)->signalB = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "FSM_protected.h"
|
#include "FSM_protected.h"
|
||||||
#include "templateFSM.h"
|
#include "templateFSM.h"
|
||||||
|
@ -28,11 +29,9 @@ static Event ceventArr[20] = {
|
||||||
|
|
||||||
static Event selectEvent(TemplateFSMData *data, TemplateFSMSignals *signals){ // 必须重新实现
|
static Event selectEvent(TemplateFSMData *data, TemplateFSMSignals *signals){ // 必须重新实现
|
||||||
if(signals->signalA){
|
if(signals->signalA){
|
||||||
signals->signalA = 0;
|
|
||||||
return E2D;
|
return E2D;
|
||||||
}
|
}
|
||||||
if(signals->signalB){
|
if(signals->signalB){
|
||||||
signals->signalB = 0;
|
|
||||||
return D2E;
|
return D2E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,6 +69,11 @@ static void initSignals(TemplateFSM *pFSM){
|
||||||
pFSM->base.signals = signals;
|
pFSM->base.signals = signals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void resetSignals(TemplateFSM *pFSM){
|
||||||
|
memset(pFSM->base.signals, 0, sizeof(TemplateFSMSignals));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void initDataLoader(TemplateFSM *pFSM){ // 必须重新实现
|
static void initDataLoader(TemplateFSM *pFSM){ // 必须重新实现
|
||||||
pFSM->base.privateVars.preloader.in = malloc(sizeof(TemplateFSMIn));
|
pFSM->base.privateVars.preloader.in = malloc(sizeof(TemplateFSMIn));
|
||||||
|
@ -107,6 +111,7 @@ TemplateFSM *createTemplateFSM(){
|
||||||
pFSM->base.vtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
pFSM->base.vtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
|
||||||
pFSM->base.vtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
pFSM->base.vtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
|
||||||
pFSM->base.vtbl.initSignals = (Avoid_WARNING_Overrider_Fcns)initSignals;
|
pFSM->base.vtbl.initSignals = (Avoid_WARNING_Overrider_Fcns)initSignals;
|
||||||
|
pFSM->base.vtbl.resetSignals = (Avoid_WARNING_Overrider_Fcns)resetSignals;
|
||||||
|
|
||||||
pFSM->base.vtbl.selectEvent = (Avoid_WARNING_SelectEvent)selectEvent;
|
pFSM->base.vtbl.selectEvent = (Avoid_WARNING_SelectEvent)selectEvent;
|
||||||
pFSM->base.vtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
pFSM->base.vtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;
|
||||||
|
|
Loading…
Reference in New Issue