没存完,再存一次。回去看状态图结构
This commit is contained in:
parent
23a07ea75e
commit
75ce4d1a9a
|
@ -37,6 +37,22 @@ typedef enum _State
|
||||||
#define DEFAULT_STATE Waiting
|
#define DEFAULT_STATE Waiting
|
||||||
|
|
||||||
|
|
||||||
|
static Event selectNextStateFcn(Waiting)(KeyFSMData *data){
|
||||||
|
|
||||||
|
if(data->countDelay == 10){
|
||||||
|
return HoldCount4;
|
||||||
|
}
|
||||||
|
else if(data->countDelay == 5){
|
||||||
|
return DelayCount3;
|
||||||
|
}
|
||||||
|
else if(data->in == Up){
|
||||||
|
return PhsicalUp;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return PhsicalDown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void actionFcn(enter, Waiting)(KeyFSMData* data){
|
static void actionFcn(enter, Waiting)(KeyFSMData* data){
|
||||||
|
|
||||||
data->out = Idle;
|
data->out = Idle;
|
||||||
|
|
|
@ -15,9 +15,11 @@ typedef struct _TemplateFSM
|
||||||
FSM base;
|
FSM base;
|
||||||
}TemplateFSM;
|
}TemplateFSM;
|
||||||
|
|
||||||
/*
|
|
||||||
状态和对应的 action, exit, during 函数
|
/* -------------------------------------------------------------------------- */
|
||||||
*/
|
/* 状态 */
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
typedef enum _State
|
typedef enum _State
|
||||||
{
|
{
|
||||||
|
@ -29,6 +31,17 @@ typedef enum _State
|
||||||
} State;
|
} State;
|
||||||
#define DEFAULT_STATE E
|
#define DEFAULT_STATE E
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* 下一个状态选择函数 */
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
static void selectNextStateFcn(D)(TemplateFSMData *data, TemplateFSMSignals *signals){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* 对应的 action, exit, during 函数 */
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
static void actionFcn(enter, D)()
|
static void actionFcn(enter, D)()
|
||||||
{
|
{
|
||||||
FSM_LOG(" enterD ");
|
FSM_LOG(" enterD ");
|
||||||
|
@ -55,47 +68,33 @@ static void actionFcn(exit, E)()
|
||||||
FSM_LOG(" exitE ");
|
FSM_LOG(" exitE ");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
事件和对应的转移函数
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef enum _Event{
|
|
||||||
Idle_Event,
|
|
||||||
Idle2D,
|
|
||||||
Idle2E,
|
|
||||||
D2E,
|
|
||||||
E2D,
|
|
||||||
|
|
||||||
Count_Event,
|
|
||||||
}Event;
|
|
||||||
|
|
||||||
|
|
||||||
static State transitionHandler(Idle2D)()
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* 转移函数 */
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
static void transitionHandler(Idle, D)()
|
||||||
{
|
{
|
||||||
FSM_LOG(" Idle2D ");
|
FSM_LOG(" Idle2D ");
|
||||||
return D;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void delayHanlder(Idle2D)(TemplateFSMData *data){
|
static void delayHanlder(Idle, D)(TemplateFSMData *data){
|
||||||
FSM_LOG(" DelayIdle2D");
|
FSM_LOG(" DelayIdle2D");
|
||||||
}
|
}
|
||||||
|
|
||||||
static State transitionHandler(Idle2E)()
|
static State transitionHandler(Idle, E)()
|
||||||
{
|
{
|
||||||
FSM_LOG(" Idle2E ");
|
FSM_LOG(" Idle2E ");
|
||||||
return E;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static State transitionHandler(D2E)()
|
static State transitionHandler(D, E)()
|
||||||
{
|
{
|
||||||
FSM_LOG(" D2E ");
|
FSM_LOG(" D2E ");
|
||||||
return E;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static State transitionHandler(E2D)()
|
static State transitionHandler(E, D)()
|
||||||
{
|
{
|
||||||
FSM_LOG(" E2D ");
|
FSM_LOG(" E2D ");
|
||||||
return D;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,17 +107,11 @@ const static char *stateStr[] = {
|
||||||
"Idle",
|
"Idle",
|
||||||
"D",
|
"D",
|
||||||
"E",
|
"E",
|
||||||
};
|
|
||||||
const static char *eventStr[] = {
|
|
||||||
"Idle",
|
|
||||||
"Idle2D",
|
|
||||||
"Idle2E",
|
|
||||||
"D2E",
|
|
||||||
"E2D",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void printFSM(TemplateFSM* pFSM){
|
static void printFSM(TemplateFSM* pFSM){
|
||||||
FSM_LOG(" \tTemplateFSM: ");
|
FSM_LOG(" \tTemplateFSM: ");
|
||||||
FSM_LOG("上次事件:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", eventStr[getFSMCurEvent((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
|
FSM_LOG("下次状态:%s, 当前状态:%s, 预装载器溢出:%d ,动作:", stateStr[getFSMNextState((FSM *)pFSM)], stateStr[getFSMCurState((FSM *)pFSM)], _getPreloaderOverFlag((FSM *)pFSM));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue