Challenge

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

#include //Header file

#include "States.h"//Created header file

static void (*state_table[])(void)={Gear_Down,Checking_Before_Takeoff,Raising_Gear,Gear_Up,Checking_Before_Landing,Lowering_Gear};

//Variables

int main()

{

Init_State_Machine();//Function calling

   while(1)//Loop

   {

       state_table[current_state]();

   }

    return 0;

}

States.h

#ifndef STATES_H_

#define STATES_H_//define

#include//Header file for standard i/o library

//function

void Init_State_Machine();

void Gear_Down();

void Checking_Before_Takeoff ();

void Raising_Gear();

void Gear_Up();

void Checking_Before_Landing();

void Lowering_Gear();

typedef enum State

{

//States

GR_DWN,

CHK_BFR_TKFF,

RSING_GR,

GR_UP,

CHK_BFR_LND,

LWRNG_GR

}State_Type;

typedef enum Switch {

Open,

Close//Plane is in ground

}Switch_Status;

typedef enum Pilot_Lever

{

Rising,

Falling,

UP,

DOWN

}Pilot_Lever_Status;

typedef enum Hydraulic_Mechanism

{

Working,

Malfunctioning

}Hydraulic_Mechanism_Status;

/* -input for changing the State----- */

static volatile Switch_Status squat_switch;

static volatile Switch_Status limit_switch;

static volatile Pilot_Lever_Status pilot_lever;

static volatile Hydraulic_Mechanism_Status hydraulic_mechanism;

State_Type current_state;

typedef struct

{

char* current_state_indication;

char* light_status;

Lowering_Gear.c

#include "States.h" 

void Lowering_Gear(){

//State

current_state = LWRNG_GR;

printf("\nCurrent State: %s\n",State_Machine[current_state].current_state_indication);

printf("\nEnter the Limit Switch Status, Pilots Leaver Status:");

fflush(stdout);

scanf("%d %d",&limit_switch,&pilot_lever);//taking i/p from the user

if(pilot_lever == Rising)

{

current_state= CHK_BFR_TKFF;

printf("\nCurrent State: %s\n",State_Machine[current_state].current_state_indication);

printf("Light Status:%s\n",State_Machine[current_state].light_status);

}

if(limit_switch == Open)

{

current_state= GR_DWN;

printf("\nCurrent State: %s\n",State_Machine[current_state].current_state_indication);

printf("Light Status:%s\n",State_Machine[current_state].light_status);

printf("Hydraulic Control for Landing Gear Status:%s\n",State_Machine[current_state].hydraulic_pump_control_status);

}

if(limit_switch == Close)

{

Lowering_Gear();

}

char* direction_valve_status;

char* hydraulic_pump_control_status;

//char* gas_pressurized_spring_status[2];

}State_Table;

static State_Table State_Machine [6] = {

{"Gear Down", "Green", "Down", "Enabled" },//{0,0}

{"Checking Before Take Off", "Green", "Down", "Enabled"},

{"Raising Gear", "Red", "Up", "Enabled"},

{"Gear Up", "Off", "0","Disabled"},

{"Checking Before Landing", "Red", "Down", "Enabled"},

{"Lowering Gear", "Green", "Down", "Enabled"}

};

#endif /* STATES_H_ */

Gear_Down.c

#include"States.h"

void Gear_Down(void)

{

current_state = GR_DWN;

printf("\nCurrent State: %s\n", State_Machine [current_state]. current_state_indication);

printf("\nEnter the Pilot's Lever Position and Squat Switch Status:");

fflush(stdout);

scanf("%d %d", &pilot_lever, &squat_switch);

if(pilot_lever == Rising && squat_switch == Open)

{

current_state = CHK_BFR_TKFF;

printf("\nCurrent State: %s\n", State_Machine [current_state]. current_state_indication);

printf("Light Status: %s\n", State_Machine [current_state].light_status);

}

else

{

Gear_Down();

}

}

Gear_Up.c

#include "States.h"

void Gear_Up()//func

{

current_state = GR_UP;

printf("\nCurrent State: %s\n",State_Machine[current_state].current_state_indication);

printf("\nEnter the Pilot's Lever Position:");

fflush(stdout);

scanf("%d",&pilot_lever);

if(pilot_lever == Falling)

{

current_state = CHK_BFR_LND;

printf("\nCurrent State: %s\n",State_Machine[current_state].current_state_indication);

printf("Light Status:%s\n",State_Machine[current_state].light_status);

printf("Hydraulic Control for Landing Gear Status:%s\n",State_Machine[current_state].hydraulic_pump_control_status);

}

else

{

Gear_Up();

}

}

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.

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.