/*--- State Machine ---*/
enum STATE{STATE_1, STATE_2, STATE_3, STATE_4}; /* State enumeration */
/*--- State machine function prototypes. ---*/
enum STATE state_1(void); /* Functions return next state */
enum STATE state_2(void);
enum STATE state_3(void);
enum STATE state_4(void);
/*--- Program entry ---*/
int main(void)
{
enum STATE State;
enum STATE(*const Active_State[])(void) = /* Constant array of function pointers */
{state_1, state_2, state_3, state_4};
State = STATE_1;
for(;;){
State = Active_State[State](); /* execute state machine */
}
return 0;
}
/*--- State 1 ---*/
enum STATE state_1(void)
{
enum STATE State = STATE_1;
while(State == STATE_1)
{
/* Code for state 1
if(Somethings happened){
State = STATE_2;
}
*/
}
return STATE_2; /* Return next state */
}
/*--- State 2 ---*/
enum STATE state_2(void)
{
return STATE_3;
}
/*--- State 3 ---*/
enum STATE state_3(void)
{
return STATE_4;
}
/*--- State 4 ---*/
enum STATE state_4(void)
{
return STATE_1;
}
/*--- End of File ---*/