# StateMachine **Repository Path**: syfchao/stateMachine ## Basic Information - **Project Name**: StateMachine - **Description**: StateMachine for fsm and hsm - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-04-06 - **Last Updated**: 2022-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # StateMachine ## Arch ``` . ├── LICENSE ├── README.md └── src ├── fsm └── hsm ``` ## Feature 1. FSM See sample for fsm 2. HSM ## About FSM (Sample) ``` //define dog obj DEF_CYN_FSM_OBJ_STATIC(dog,4) typedef enum { runrunrun, gggggame, eeeeeat, ffffffuck, }ddddddog; //define every active for dog mu32 dog_run(mu32 *arg) { run run run.... cynFsmJump(CYN_FSM_OBJ(dog),gggggame,1000); } mu32 dog_game(mu32 *arg) { gggggame.... cynFsmJump(CYN_FSM_OBJ(dog),gggggame,0); } mu32 dog_eat(mu32 *arg) { eeeeeat.... cynFsmJump(CYN_FSM_OBJ(dog),gggggame,5000); } mu32 dog_fuck(mu32 *arg) { ffffffuck.... } // time interrupt for fsmobj void interrupt_systick_1ms() { cynFsmTick(CYN_FSM_OBJ(dog),1); } //logic - dog_run->delay for 1000ms->dog_game ->delay for 5000ms -> dog_eat -> dog_fuck forever int main(void) { cynFsmRegister(CYN_FSM_OBJ(dog),runrunrun,dog_run); cynFsmRegister(CYN_FSM_OBJ(dog),gggggame,dog_game); cynFsmRegister(CYN_FSM_OBJ(dog),eeeeeat,dog_eat); cynFsmRegister(CYN_FSM_OBJ(dog),ffffffuck,dog_fuck); while(1) { //you can set the arg val(CYN_FSM_OBJ(dog)->funArg) cynFsmRun(CYN_FSM_OBJ(dog)); //fsm obj run //you can check the return val(CYN_FSM_OBJ(dog)->funReturn) } } ``` ## About HSM ``` /* TODO */ ```