Challenge

Project 2 - Implement the Code for controlling the retraction and extension of Airplane’s landing gear

#include

#include

typedef enum

{

Geardown,

CheckTakeoff,

RaisingGear,

Gearup,

CheckLanding,

LoweringGear

}State_Type;

typedef enum

{

Lever_Down_Squat_Closed,

Lever_Falling_Limit_Open,

Lever_Raising_Squat_Open,

Lever_Up_Limit_Closed

}LeverSwitch_Input;

typedef struct

{

int delay;

char* plane[4];

State_Type state[4];

char* currentstate[4];

char* LED[4];

}Gear;

Gear fsm[6]=

{

{5,{"AirplaneTakingoff","AirplaneGrounded_Parked","AirplaneTakingoff","AirplaneTakingoff"},{CheckTakeoff,Geardown,CheckTakeoff,CheckTakeoff},{"CHECKTAKEOFF","GEARDOWN","CHECKTAKEOFF","CHECKTAKEOFF"},{"RED","GREEN","RED","RED"}},

{5,{"AirplaneTakingoff","AirplaneGrounded_Parked","AirplaneTakingoff","AirplaneTakingoff"},{RaisingGear,Geardown,RaisingGear,RaisingGear},{"RAISING GEAR","GEARDOWN","RAISING GEAR","RAISING GEAR"},{"RED","GREEN","RED","RED"}},

{5,{"AirplaneLanding","AirplaneLanding","AirplaneAirborne","AirplaneAirborne"},{CheckLanding,CheckLanding,Gearup,Gearup},{"CHECKLANDING","CHECKLANDING","GEARUP","GEARUP"},{"RED","RED","OFF","OFF"}},

{5,{"AirplaneLanding","AirplaneLanding","AirplaneAirborne","AirplaneAirborne"},{CheckLanding,CheckLanding,Gearup,Gearup},{"CHECKLANDING","CHECKLANDING","GEARUP","GEARUP"},{"RED","RED","OFF","OFF"}},

{5,{"AirplaneLanding","AirplaneLanding","AirplaneTakingoff","AirplaneAirborne"},{LoweringGear,LoweringGear,RaisingGear,Gearup},{"LOWERINGGEAR","LOWERINGGEAR","RAISINGGEAR","GEARUP"},{"RED","RED","RED","OFF"}},

{5,{"AirplaneLanding","AirplaneLanding","AirplaneTakingoff","AirplaneLanding"},{Geardown,Geardown,CheckTakeoff,CheckLanding},{"GEARDOWN","GEARDOWN","CHECKTAKEOFF","CHECKLANDING"},{"GREEN","GREEN","RED","RED"}}

};

LeverSwitch_Input input;

int current_state;

int lever_state,limit_state,squat_state;

int main()

{

current_state = Geardown;

while(1)

{

printf("\nEnter the Lever,Limit and Squat switch state:");

scanf("%d %d %d",&lever_state,&limit_state,&squat_state);

if (lever_state == 0 && limit_state == 0 && squat_state == 0)

{

input = Lever_Down_Squat_Closed;

printf("\nCurrent Status:%s",fsm[current_state].currentstate[input]);

printf("\nColor of the LED:%s",fsm[current_state].LED[input]);

current_state = fsm[current_state].state[input];

}

else if(lever_state == 0 && limit_state == 0 && squat_state == 1)

{

input = Lever_Falling_Limit_Open;

printf("\nCurrent Status:%s",fsm[current_state].currentstate[input]);

printf("\nColor of the LED:%s",fsm[current_state].LED[input]);

current_state = fsm[current_state].state[input];

}

else if(lever_state == 1 && limit_state == 0 && squat_state == 0)

{

input = Lever_Raising_Squat_Open;

printf("\nCurrent Status:%s",fsm[current_state].currentstate[input]);

printf("\nColor of the LED:%s",fsm[current_state].LED[input]);

current_state = fsm[current_state].state[input];

}

else if(lever_state == 1 && limit_state == 1 && squat_state == 1)

{

input = Lever_Up_Limit_Closed;

printf("\nCurrent Status:%s",fsm[current_state].currentstate[input]);

printf("\nColor of the LED:%s",fsm[current_state].LED[input]);

current_state = fsm[current_state].state[input];

}

printf("\nPlease wait for %d Second",fsm[current_state].delay);

printf("\nAirplane Status:%s",fsm[current_state].plane[input]);

}

}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.