diff --git a/.vscode/settings.json b/.vscode/settings.json index 47a014f..6a6f9c2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,8 @@ "fsm_protected.h": "c", "keyfsm.h": "c", "fsm_public.h": "c", - "stdio.h": "c" + "stdio.h": "c", + "assert.h": "c" }, "files.encoding": "utf8" } \ No newline at end of file diff --git a/FSM_OOP/baseFSM/FSM_protected.h b/FSM_OOP/baseFSM/FSM_protected.h index d893684..b63cb20 100644 --- a/FSM_OOP/baseFSM/FSM_protected.h +++ b/FSM_OOP/baseFSM/FSM_protected.h @@ -3,6 +3,15 @@ #include "FSM_public.h" + +#define FSM_LOG_ON +#ifdef FSM_LOG_ON + #define FSM_LOG(...) printf(__VA_ARGS__) +#else + #define FSM_LOG(...) ((void)0) +#endif + + #define during during #define enter enter #define exit exit diff --git a/FSM_OOP/usr/keyFSM.c b/FSM_OOP/usr/keyFSM.c index 20a892d..39cd5eb 100644 --- a/FSM_OOP/usr/keyFSM.c +++ b/FSM_OOP/usr/keyFSM.c @@ -32,7 +32,7 @@ static void step(KeyFSM* pFSM){ KeyFSMData * data = pFSM->base.data; - printf("\t信号:%d, 计数%d ", data->out, data->countDelay); + FSM_LOG("\t信号:%d, 计数%d ", data->out, data->countDelay); } static void initData(KeyFSM *pFSM){ // 必须重新实现 diff --git a/FSM_OOP/usr/keyFSM_private.h b/FSM_OOP/usr/keyFSM_private.h index f973f3a..5594fb9 100644 --- a/FSM_OOP/usr/keyFSM_private.h +++ b/FSM_OOP/usr/keyFSM_private.h @@ -51,7 +51,7 @@ static void actionFcn(during, DownDebouncing)(KeyFSM *pFSM) { KeyFSMData * data = pFSM->base.data; data->countDelay++; - printf(" during开启消抖 "); + FSM_LOG(" during开启消抖 "); } @@ -73,7 +73,7 @@ static void actionFcn(exit, Downing)(KeyFSM *pFSM) static void actionFcn(during, UpDebouncing)(KeyFSM *pFSM){ KeyFSMData * data = pFSM->base.data; data->countDelay++; - printf(" during松开消抖 "); + FSM_LOG(" during松开消抖 "); } @@ -99,7 +99,7 @@ static void actionFcn(exit, Holding)(KeyFSM *pFSM){ static void actionFcn(during, MultiDownWaiting)(KeyFSM *pFSM){ KeyFSMData * data = pFSM->base.data; data->countDelay++; - printf(" during多击等待 "); + FSM_LOG(" during多击等待 "); } @@ -139,7 +139,7 @@ typedef enum _Event{ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM) { - printf(" 物理按键按下 "); + FSM_LOG(" 物理按键按下 "); KeyFSMData * data = pFSM->base.data; data->countDelay = 0; switch (getFSMCurState((FSM_Ptr)pFSM)) @@ -161,7 +161,7 @@ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM) default: - printf("检查状态转移表设计,不应该到这里"); + FSM_LOG("检查状态转移表设计,不应该到这里"); assert(0); } @@ -169,7 +169,7 @@ static State transitionHandler(PhsicalDown)(KeyFSM *pFSM) static State transitionHandler(PhsicalUp)(KeyFSM *pFSM) { - printf(" 物理按键松开 "); + FSM_LOG(" 物理按键松开 "); KeyFSMData * data = pFSM->base.data; data->countDelay = 0; switch (getFSMCurState((FSM_Ptr)pFSM)) @@ -189,14 +189,14 @@ static State transitionHandler(PhsicalUp)(KeyFSM *pFSM) return UpDebouncing; default: - printf("检查状态转移表设计,不应该到这里"); + FSM_LOG("检查状态转移表设计,不应该到这里"); assert(0); } } static State transitionHandler(DelayCount3)(KeyFSM *pFSM){ - printf(" 延迟计数到3 "); + FSM_LOG(" 延迟计数到3 "); KeyFSMData * data = pFSM->base.data; data->countDelay = 0; switch (getFSMCurState((FSM_Ptr)pFSM)) @@ -204,14 +204,14 @@ static State transitionHandler(DelayCount3)(KeyFSM *pFSM){ case DownDebouncing: data->out = Down; - printf("按键按下"); + FSM_LOG("按键按下"); return Downing; case UpDebouncing: data->out = Up; data->countMultiDown++; - printf("按键松开"); + FSM_LOG("按键松开"); return MultiDownWaiting; case MultiDownWaiting: @@ -223,14 +223,14 @@ static State transitionHandler(DelayCount3)(KeyFSM *pFSM){ return Waiting; default: - printf("检查状态转移表设计,不应该到这里"); + FSM_LOG("检查状态转移表设计,不应该到这里"); assert(0); } } static State transitionHandler(HoldCount4)(KeyFSM *pFSM){ - printf(" 计数到2进入长按模式 "); + FSM_LOG(" 计数到2进入长按模式 "); KeyFSMData * data = pFSM->base.data; data->countDelay = 0; data->out = Hold; @@ -240,7 +240,7 @@ static State transitionHandler(HoldCount4)(KeyFSM *pFSM){ static State transitionHandler(MultiDown)(KeyFSM *pFSM){ - printf(" 多击 "); + FSM_LOG(" 多击 "); KeyFSMData * data = pFSM->base.data; data->countDelay = 0; @@ -254,11 +254,11 @@ static State transitionHandler(MultiDown)(KeyFSM *pFSM){ break; default: - printf(" 到达多击次数上限了 "); + FSM_LOG(" 到达多击次数上限了 "); break; } - printf(" 多击%d ", data->countMultiDown+1); + FSM_LOG(" 多击%d ", data->countMultiDown+1); return MultiDowning; } @@ -287,8 +287,8 @@ const static char *eventStr[] = { "HoldCount4", }; static void printFSM(KeyFSM* pFSM){ - printf("\tKeyFSM: "); - printf("当前状态:%s, \t\t当前事件:%s, \t\t转移:", stateStr[getFSMCurState((FSM_Ptr)pFSM)], eventStr[getFSMCurEvent((FSM_Ptr)pFSM)]); + FSM_LOG("\tKeyFSM: "); + FSM_LOG("当前状态:%s, \t\t当前事件:%s, \t\t转移:", stateStr[getFSMCurState((FSM_Ptr)pFSM)], eventStr[getFSMCurEvent((FSM_Ptr)pFSM)]); }