Project 2 - Implement the Code for controlling the retraction and extension of Airplane’s landing gear
Code:
#include<stdio.h>
#include<conio.h>
typedef enum
{
Gear_Down_State,
Checking_Before_Take_Off_Delay_3S_State,
Raising_Gear_State,
Gear_Up_State,
Checking_Before_landing_State,
Lowering_Gear_State,
}eSystemState;
typedef enum
{
Checking_Before_Take_Off_Delay_3S_Event,
Raising_Gear_Event,
Gear_Up_Event,
Checking_Before_landing_Event,
Lowering_Gear_Event,
}eSystemEvent;
eSystemState LoweringgeareventHandler(void)
{
return Gear_Down_State;
}
eSystemState CheckingbeforelandingHandler(void)
{
return Lowering_Gear_State;
}
eSystemState GearupHandler(void)
{
return Gear_Up_State;
}
eSystemState RaisinggearHandler(void)
{
return Raising_Gear_State;
}
eSystemState CheckingbeforeTakeoffDelay3SHandler(void)
{
return Gear_Down_State;
}
int main(int argc,char *argv[])
{
eSystemState eNextState=Gear_Down_State;
eSystemEvent eNewEvent;
while(1)
{
switch(eNextState)
{
case Gear_Down_State:
{
if(Checking_Before_Take_Off_Delay_3S_Event==eNewEvent)
{
eNextState=LoweringgeareventHandler();
}
}
break;
case Checking_Before_Take_Off_Delay_3S_State:
{
if(Raising_Gear_Event==eNewEvent)
{
eNextState=RaisinggearHandler();
}
}
break;
case Raising_Gear_State:
{
if(Gear_Up_Event==eNewEvent)
{
eNextState=GearupHandler();
}
}
break;
case Gear_Up_State:
{
if(Checking_Before_landing_Event==eNewEvent)
{
eNextState=CheckingbeforelandingHandler();
}
}
break;
case Lowering_Gear_State:
{
if(Lowering_Gear_Event==eNewEvent)
{
eNextState=LoweringgeareventHandler();
}
}
break;
default:
break;
}
}
}