Challenge

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

#include

// Enumeration for different state types

typedef enum {

Gear_Down,

Checking_before_Take_off,

Raising_Gear,

Lowering_Gear,

Checking_before_Landing,

Gear_Up

} State_Types;

// Enumeration for squat and limit switch states

typedef enum {

LIMIT_SWITCH_CLOSED,

LIMIT_SWITCH_OPENED,

SQUAT_SWITCH_CLOSED,

SQUAT_SWITCH_OPENED

} Switch;

// Enumeration for pilot's lever state

typedef enum {

Lever_Up,

Lever_Down,

Lever_Rising_Edge,

Lever_Falling_Edge

} Pilots_lever_state;

// Enumeration for direction valve state

typedef enum {

Down=0,

wait_rise=1,

Up=2,

Downa=3,

wait_fall=4,

Control_disabled=5,

} Direction_valve;

// Structure to define the state machine

typedef struct {

State_Types output;

int time;

State_Types state_types_signal[6];

char* state_signal[6];

} State;

// Initializing the state machine

State state_machine[6] = {

{Gear_Down, 4, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}},

{Checking_before_Take_off, 4, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}},

{Raising_Gear, 4, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}},

{Lowering_Gear, 4, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}},

{Checking_before_Landing, 30, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}},

{Gear_Up, 4, {Gear_Down, Checking_before_Take_off, Raising_Gear, Lowering_Gear, Checking_before_Landing, Gear_Up}, {"Gear Down", "Checking before Take off", "Raising Gear", "Lowering Gear", "Checking before Landing", "Gear Up"}}

};

int current_state = Gear_Down;

Switch switch_state;

Pilots_lever_state lever_state;

Direction_valve input;

int main() {

// Example inputs for testing

switch_state = LIMIT_SWITCH_CLOSED;

//lever_state = Lever_Down;

// Decision logic based on inputs

if (switch_state == SQUAT_SWITCH_OPENED && lever_state == Lever_Rising_Edge) {

input = Down;

} else if (switch_state == LIMIT_SWITCH_OPENED && lever_state == Lever_Down) {

input = Down;

} else if (lever_state == Lever_Down) {

input = Down;

} else if (lever_state == Lever_Rising_Edge) {

input = wait_rise;

} else if (lever_state == Lever_Up) {

input = Up;

} else if (switch_state == LIMIT_SWITCH_CLOSED) {

input = Control_disabled;

} else if (lever_state == Lever_Falling_Edge) {

input = wait_fall;

}

// Print the current state based on the input

printf("\nCurrent State is: %s\n", state_machine[current_state].state_signal[input]);

// Transition to the next state

current_state = state_machine[current_state].state_types_signal[input];

// Print the output and time

printf("Value of Output is: %d\n", state_machine[current_state].output);

printf("Please wait for: %d sec\n", state_machine[current_state].time);

return 0;

}


logic) The code simulates a state machine for an aircraft landing gear system. Based on the states of various switches and the pilot's lever, it determines the current state and transitions to the next state, printing relevant information at each step. This logic is typical for controlling mechanisms that depend on a sequence of events and conditions.

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.