Challenge

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

#include<stdio.h> // header file
#include<stdlib.h> //library file
#include<stdint.h> // integer file
#include<string.h> //string header
void Gear_down(); //function calls for operation
void Checking_Before_TakeOFF_delay_3s();
void Raising_Gear();
void Gear_up();
void Checking_before_landing();
void Lowering_gear();
typedef enum //declaring number of state machine 1
{
GEAR_DOWN,
CHECKING_BEFORE_TAKEOFF_DELAY_3S,
RAISING_GEAR,
GEAR_UP,
CHECKING_BEFORE_LANDING,
LOWERING_GEAR
}State_Types;
typedef enum //declaring switch state machine 2
{
open,
close
}Switch;
typedef enum //declaring pilot lever state machine 3
{
raising,
falling,
up,
down
}pilot_Lever;
typedef enum //declaring hydralic operation state machine 4
{
Working,
Not_working
}Hydralic;
static volatile Switch limit_switch,Squat_switch; //static declare
static volatile pilot_Lever pil;
static volatile Hydralic operation;
State_Types current_state;

typedef struct //declaring structure state machine 5
{
char* currentstate;
char* lightvalue;
char* directionValve;
char* Hydraliccontrol;
}state; //array of function pointer
static void(*state1[])(void)={Gear_down,Checking_Before_TakeOFF_delay_3s,
Raising_Gear,Gear_up,Checking_before_landing,Lowering_gear}; //state table formation
state state_machine[6]= {{"GearDown", "Green", "Down", "Enabled"},
{"Checking before takeoff", "Green","Down", "Enabled"},
{"Raising Gear", "Red", "Up", "Enabled"},
{"Gearup", "off", "Null", "Disabled"},
{"Checking before landing", "Red","Down", "Enabled"},
{"Loweringgear", "Green", "Down", "Enabled"}};
int main() // main function
{
current_state=GEAR_DOWN;
while(1) //while condition statement
{
state1[current_state]();
}
}
void Gear_down() //function call operation
{
current_state=GEAR_DOWN;
printf("\nEnter the values of pil and squatswitch:\n ");
fflush(stdout);
scanf("%d %d",&pil,&Squat_switch);
if(pil==raising && Squat_switch==close) //if..else condition statement - 1
{
current_state=CHECKING_BEFORE_TAKEOFF_DELAY_3S;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Gear_down();
}
}
void Checking_Before_TakeOFF_delay_3s() //function call operation
{
current_state= CHECKING_BEFORE_TAKEOFF_DELAY_3S;
printf("\n Enter the values of pil and squatswitch and operation:\n");
fflush(stdout);
scanf("%d %d",&pil,&Squat_switch);
if(pil==falling && Squat_switch==close) //if condition statement - 1
{
current_state=GEAR_DOWN;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
if(pil==up && operation==Working) //if..else condition statement - 2
{
current_state=RAISING_GEAR;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Checking_Before_TakeOFF_delay_3s();
}
}
void Raising_Gear() //function call operation
{
current_state=RAISING_GEAR;
printf("\n Enter the values of pil and limit_switch \n");
fflush(stdout);
scanf("%d %d",&pil,&limit_switch);
if(pil==falling) //if condition statement - 2
{
current_state=CHECKING_BEFORE_LANDING;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
if(limit_switch==close) //if..else condition statement - 3
{
current_state=GEAR_UP;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Raising_Gear();
}
}
void Gear_up() //function call operation
{
current_state=GEAR_UP;
printf("\n Enter the values of pil \n");
fflush(stdout);
scanf("%d",&pil);
if(pil==falling) //if condition statement - 3
{
current_state=CHECKING_BEFORE_LANDING;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Gear_up();
}
}
void Checking_before_landing() //function call operation
{
current_state=CHECKING_BEFORE_LANDING;
printf("\n Enter the values of pil and operation \n");
fflush(stdout);
scanf("%d %d",&pil,&operation);
if(pil==down || operation==Not_working) //if..else condition statement - 4
{
current_state=LOWERING_GEAR;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Checking_before_landing();
}
}
void Lowering_gear() //function call operation
{
current_state=LOWERING_GEAR;
printf("\n Enter the values of pil and limit_switch \n");
fflush(stdout);
scanf("%d %d",&pil,&limit_switch);
if(limit_switch==close) //if condition statement - 4
{
current_state=GEAR_DOWN;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
if(pil==raising) //if..else condition statement - 5
{
current_state=CHECKING_BEFORE_TAKEOFF_DELAY_3S;
printf("\n status of currentstate is %s",state_machine[current_state].currentstate);
printf("\n status of lightvalue is %s",state_machine[current_state].lightvalue);
printf("\n status of directionValve is %s",state_machine[current_state].directionValve);
printf("\n status of Hydraliccontrol is %s",state_machine[current_state].Hydraliccontrol);
}
else
{
Lowering_gear();
}
}

Output

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.