上28377测试吧
This commit is contained in:
parent
1743321fab
commit
3fe745f71b
|
@ -10,14 +10,17 @@
|
|||
*/
|
||||
|
||||
static Event selectEvent(KeyFSMData *data){ // 必须重新实现
|
||||
if(data->countDelay == 2){
|
||||
return HoldCount2;
|
||||
if(data->countDelay == 4){
|
||||
return HoldCount4;
|
||||
}
|
||||
|
||||
if(data->countDelay == 3){
|
||||
if(data->countMultiDown && data->lastState == MultiDownWaiting){
|
||||
return MultiDown;
|
||||
}
|
||||
if(data->lastState == Holding){
|
||||
return UpDebouncing2Waiting;
|
||||
}
|
||||
return DelayCount3;
|
||||
}
|
||||
|
||||
|
@ -25,6 +28,9 @@ static Event selectEvent(KeyFSMData *data){ // 必须重新实现
|
|||
return PhsicalUp;
|
||||
}
|
||||
else{
|
||||
if(data->lastState == Holding){
|
||||
return UpDebouncing2Holding;
|
||||
}
|
||||
return PhsicalDown;
|
||||
}
|
||||
}
|
||||
|
@ -60,6 +66,7 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
|
|||
fcns->exitActionTable[Downing] = (Avoid_WARNING_void_FSM)actionFcn(exit, Downing);
|
||||
|
||||
fcns->duringActionTable[UpDebouncing] = (Avoid_WARNING_void_FSM)actionFcn(during, UpDebouncing);
|
||||
fcns->exitActionTable[UpDebouncing] = (Avoid_WARNING_void_FSM)actionFcn(exit, UpDebouncing);
|
||||
|
||||
fcns->duringActionTable[Holding] = (Avoid_WARNING_void_FSM)actionFcn(during, Holding);
|
||||
fcns->exitActionTable[Holding] = (Avoid_WARNING_void_FSM)actionFcn(exit, Holding);
|
||||
|
@ -77,10 +84,12 @@ static void setupHandler(FSMHandler* fcns){ // 必须重新实现
|
|||
fcns->transitionTable[index(DownDebouncing, MultiDown)] = (Avoid_WARNING_int_FSM)transitionHandler(MultiDown);
|
||||
|
||||
fcns->transitionTable[index(Downing, PhsicalUp)] = (Avoid_WARNING_int_FSM)transitionHandler(PhsicalUp);
|
||||
fcns->transitionTable[index(Downing, HoldCount2)] = (Avoid_WARNING_int_FSM)transitionHandler(HoldCount2);
|
||||
fcns->transitionTable[index(Downing, HoldCount4)] = (Avoid_WARNING_int_FSM)transitionHandler(HoldCount4);
|
||||
|
||||
fcns->transitionTable[index(UpDebouncing, PhsicalDown)] = (Avoid_WARNING_int_FSM)transitionHandler(PhsicalDown);
|
||||
fcns->transitionTable[index(UpDebouncing, DelayCount3)] = (Avoid_WARNING_int_FSM)transitionHandler(DelayCount3);
|
||||
fcns->transitionTable[index(UpDebouncing, UpDebouncing2Holding)] = (Avoid_WARNING_int_FSM)transitionHandler(UpDebouncing2Holding);
|
||||
fcns->transitionTable[index(UpDebouncing, UpDebouncing2Waiting)] = (Avoid_WARNING_int_FSM)transitionHandler(UpDebouncing2Waiting);
|
||||
|
||||
fcns->transitionTable[index(Holding, PhsicalUp)] = (Avoid_WARNING_int_FSM)transitionHandler(PhsicalUp);
|
||||
|
||||
|
|
|
@ -79,6 +79,10 @@ static void actionFcn(during, UpDebouncing)(KeyFSM *pFSM){
|
|||
data->countDelay++;
|
||||
printf(" during松开消抖 ");
|
||||
}
|
||||
static void actionFcn(exit, UpDebouncing)(KeyFSM *pFSM){
|
||||
KeyFSMData * data = pFSM->base.data;
|
||||
data->lastState = Idle_State;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -132,8 +136,10 @@ typedef enum _Event{
|
|||
PhsicalUp,
|
||||
DelayCount3,
|
||||
|
||||
HoldCount2,
|
||||
HoldCount4,
|
||||
MultiDown,
|
||||
UpDebouncing2Holding,
|
||||
UpDebouncing2Waiting,
|
||||
|
||||
Count_Event,
|
||||
}Event;
|
||||
|
@ -150,7 +156,7 @@ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM)
|
|||
|
||||
case UpDebouncing:
|
||||
if(data->countMultiDown){
|
||||
return MultiDown;
|
||||
return MultiDowning;
|
||||
}
|
||||
|
||||
if(data->lastState == Holding){
|
||||
|
@ -231,7 +237,7 @@ static State transitionHandler(DelayCount3)(KeyFSM *pFSM){
|
|||
}
|
||||
|
||||
|
||||
static State transitionHandler(HoldCount2)(KeyFSM *pFSM){
|
||||
static State transitionHandler(HoldCount4)(KeyFSM *pFSM){
|
||||
printf(" 计数到2进入长按模式 ");
|
||||
KeyFSMData * data = pFSM->base.data;
|
||||
data->countDelay = 0;
|
||||
|
@ -240,6 +246,7 @@ static State transitionHandler(HoldCount2)(KeyFSM *pFSM){
|
|||
}
|
||||
|
||||
|
||||
|
||||
static State transitionHandler(MultiDown)(KeyFSM *pFSM){
|
||||
printf(" 多击 ");
|
||||
KeyFSMData * data = pFSM->base.data;
|
||||
|
@ -263,8 +270,21 @@ static State transitionHandler(MultiDown)(KeyFSM *pFSM){
|
|||
return MultiDowning;
|
||||
}
|
||||
|
||||
static State transitionHandler(UpDebouncing2Holding)(KeyFSM *pFSM){
|
||||
printf(" 回到长按 ");
|
||||
KeyFSMData * data = pFSM->base.data;
|
||||
data->countDelay = 0;
|
||||
data->out = Idle;
|
||||
return Holding;
|
||||
}
|
||||
|
||||
|
||||
static State transitionHandler(UpDebouncing2Waiting)(KeyFSM *pFSM){
|
||||
printf(" 关闭消抖到等待 ");
|
||||
KeyFSMData * data = pFSM->base.data;
|
||||
data->countDelay = 0;
|
||||
data->out = Idle;
|
||||
return Waiting;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
@ -285,8 +305,10 @@ const static char *eventStr[] = {
|
|||
"PhsicalDown",
|
||||
"PhsicalUp",
|
||||
"DelayCount3",
|
||||
"HoldCount2",
|
||||
"HoldCount4",
|
||||
"MultiDown",
|
||||
"UpDebouncing2Holding",
|
||||
"UpDebouncing2Waiting"
|
||||
};
|
||||
static void printFSM(KeyFSM* pFSM){
|
||||
printf("\tKeyFSM: ");
|
||||
|
|
Loading…
Reference in New Issue