diff --git a/test_on_28377/.cproject b/test_on_28377/.cproject
index e223d50..e1d4e28 100644
--- a/test_on_28377/.cproject
+++ b/test_on_28377/.cproject
@@ -44,15 +44,8 @@
@@ -73,6 +65,12 @@
+
+
@@ -101,6 +99,12 @@
+
+
+
+
+
+
diff --git a/test_on_28377/.settings/org.eclipse.core.resources.prefs b/test_on_28377/.settings/org.eclipse.core.resources.prefs
index 9c7e121..b605aa3 100644
--- a/test_on_28377/.settings/org.eclipse.core.resources.prefs
+++ b/test_on_28377/.settings/org.eclipse.core.resources.prefs
@@ -19,3 +19,6 @@ encoding//CPU1_RAM/source/subdir_vars.mk=UTF-8
encoding//CPU1_RAM/sources.mk=UTF-8
encoding//CPU1_RAM/subdir_rules.mk=UTF-8
encoding//CPU1_RAM/subdir_vars.mk=UTF-8
+encoding/=UTF-8
+encoding/FSM_private.h=UTF-8
+encoding/FSM_protected.h=UTF-8
diff --git a/test_on_28377/main.c b/test_on_28377/main.c
index 42c889d..21be006 100644
--- a/test_on_28377/main.c
+++ b/test_on_28377/main.c
@@ -8,6 +8,8 @@
#define LED_BLINKY_GPIO 2
#define INPUT_GPIO 15
+#pragma diag_suppress 303
+
uint32_t exec_time[50];
uint32_t stop_time;
int index = 0;
@@ -30,36 +32,6 @@ int isDown = 0;
-//ChildFSM *cFSM;
-//ParentFSM *pFSM;
-//void childTest(){
-//
-// cFSM = createChildFSM();
-// pFSM = createParentFSM();
-//
-// setChildNum((pFSM), 1);
-// registerChildFSM((pFSM), (cFSM), 0);
-//
-// for (int i = 0; i < 15; i++)
-// {
-// ParentFSM_Input(pFSM)->arrindex = i;
-// SetPreloaderReady(pFSM);
-//
-// ChildFSM_Input(cFSM)->arrindex = i;
-// SetPreloaderReady(cFSM);
-//
-// ChildFSMData* data = getData((FSM *)(cFSM));
-// printf(" %d ", data->arrindex);
-//
-// tic();
-// _vptrFSM((FSM *)pFSM)->step((FSM *)pFSM);
-// toc(index++);
-// printf("\n");
-// }
-//}
-
-
-
KeyFSM* keyFSM;
@@ -68,7 +40,6 @@ KeyIn keystat;
void keyFSMTest(){
keyFSM = createKeyFSM();
- data = _getData((FSM *)keyFSM);
printf("hello 28377\n");
@@ -80,8 +51,9 @@ void keyFSMTest(){
Step(keyFSM);
toc(index++);
- if(data->internal.out != Idle){
- printf("%s\n", keyStr[data->internal.out]);
+ KeyOut out = readKeyFSMOut(keyFSM);
+ if(out != Idle){
+ printf("\t\t\t\t%d", out);
}
else{
index--;
@@ -96,21 +68,6 @@ int printtest(int a, int b){
return a+b;
}
-void funptrTest(){
- fcn fcnptr;
- fcnptr = printtest;
-
- int index = 0;
- while(1){
- tic();
- int c = fcnptr(10, 20);
- toc(index);
- index++;
-
- printf("%d\n", c);
- DELAY_US(20*1000);
- }
-}
void main(void)
{
@@ -124,10 +81,8 @@ void main(void)
GPIO_SetupPinMux(LED_BLINKY_GPIO, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(INPUT_GPIO, GPIO_INPUT, GPIO_PULLUP);
-
-// childTest();
keyFSMTest();
-// funptrTest();
+
}
diff --git a/vscode/FSM_OOP/baseFSM/FSM_private.h b/vscode/FSM_OOP/baseFSM/FSM_private.h
index 963c23e..78bc4ba 100644
--- a/vscode/FSM_OOP/baseFSM/FSM_private.h
+++ b/vscode/FSM_OOP/baseFSM/FSM_private.h
@@ -44,16 +44,16 @@ typedef struct FSMDataLoader
*/
typedef struct FSMPrivateVars
{
- int numState; /**< 状态数量 */
- int defaultState; /**< Idle状态不能停留,必须指定一个初始状态 */
+ int numState; /**< 状态数量 */
+ int defaultState; /**< Idle状态不能停留,必须指定一个初始状态 */
- int curState; /**< 当前状态 */
- int nextState; /**< nextState为Idle代表状态机不发生变化 */
- int index; /**< 状态转移函数表对应的标号 */
+ int curState; /**< 当前状态 */
+ int nextState; /**< nextState为Idle代表状态机不发生变化 */
+ int index; /**< 状态转移函数表对应的标号 */
- FSMHandler fcns; /**< 状态函数表 */
+ FSMHandler fcns; /**< 状态函数表 */
- // FSM *childFSM; /**< 限定只能有一个子状态机 */
+ // FSM *childFSM; /**< 限定只能有一个子状态机 */
FSM **childFSMTable; /**< 每个状态都可配置一个子状态机 */
FSMDataLoader preloader; /**< @deprecated 弃用 */
@@ -63,7 +63,7 @@ typedef struct FSMPrivateVars
/**
* @brief 纯纯空函数
*/
-static void empty_func(){
+static void empty_func(void * a){
}
diff --git a/vscode/FSM_OOP/keytest/keyFSM_private.h b/vscode/FSM_OOP/keytest/keyFSM_private.h
index b4049f7..c080ee6 100644
--- a/vscode/FSM_OOP/keytest/keyFSM_private.h
+++ b/vscode/FSM_OOP/keytest/keyFSM_private.h
@@ -216,17 +216,17 @@ void transitionGeneralAction(KeyFSMData *data){
data->internal.countDelay = 0;
}
-static State transitionHandler(DownDebouncing, Downing)(KeyFSMData* data){
+static void transitionHandler(DownDebouncing, Downing)(KeyFSMData* data){
data->internal.out = Down;
}
-static State transitionHandler(UpDebouncing, MultiDownWaiting)(KeyFSMData* data){
+static void transitionHandler(UpDebouncing, MultiDownWaiting)(KeyFSMData* data){
data->internal.out = Idle;
data->internal.countMultiDown++;
}
-static State transitionHandler(MultiDownDebouncing, MultiDowning)(KeyFSMData* data){
+static void transitionHandler(MultiDownDebouncing, MultiDowning)(KeyFSMData* data){
switch (data->internal.countMultiDown + 1)
{
case 2:
@@ -244,18 +244,18 @@ static State transitionHandler(MultiDownDebouncing, MultiDowning)(KeyFSMData* da
}
-static State transitionHandler(Downing, Holding)(KeyFSMData* data){
+static void transitionHandler(Downing, Holding)(KeyFSMData* data){
data->internal.out = Hold;
}
-static State transitionHandler(MultiDownWaiting, Waiting)(KeyFSMData* data){
+static void transitionHandler(MultiDownWaiting, Waiting)(KeyFSMData* data){
data->internal.countMultiDown = 0;
}
/*
- 用户自定义事件选择逻辑—————————————————begin
+ 用户自定义事件选择逻辑—————————————————begin
*/
const static char *stateStr[] = {
"Idle",