#include <stdio.h>//For stdout
#include"xplatform.h"//For cross-platform Xsleep()and xCls()
void goToState(void);//Prototype /1 Define states (enumerated types-like ints)
enum states {RED,REDAMBER,GREEN,AMBER};
int CurrState=-1;
int main(void) {
while(1) {
xcls();
printf("\nTraffic lights FSM\n");
printf("Terminate with Ctr1- nln");
goToState();
}
return 0;
}
void goToState(void){
currState++;
switch(currState){
case RED: //Red light
printf("{R}In");
printf("A \n");
printf("G\n");
break;
case REDAMBER: //Red + Amber lights
printf("{R}\n");
printf("{A}\n");
printf("G\n");
break;
case GREEN: //Green light
printf("R\n");
printf("A\n");
printf("{G}\n");
break;
case AMBER: // Amber light
printf("R\n");
printf("{A}\n");
printf("G\n");
CurrState =-1; //Continue ad naseum....
break;
}
xsleep(4000);//Timer delay;4 seconds
}