Challenge

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

#include<stdio.h>

const char* PLANESTATES[] = {"Grounded", "TakeOff", "Airborne", "Land"};
const char* POSITIONSTATES[] = {"Falling", "Down", "Rising", "Up"};
const char* SWITCHSTATES[] = {"Opened", "Closed"};
const char* LIGHTSTATES[] = {"Off", "Green", "Red"};

typedef enum planeStates {
    GROUNDED, TAKEOFF, AIRBORNE, LAND
} planeStates;

typedef enum positionStates  {
    FALLING, DOWN, RISING, UP
} positionStates;

typedef enum switchStates {
    OPENED, CLOSED
} switchStates;

typedef enum lightStates {
    OFF, GREEN, RED
} lightStates;

planeStates planeState;
positionStates leverState, valveState;
switchStates limitSwitchState, squatSwitchState;
lightStates lightState;

int endJourney;

void printStatus(planeStates, positionStates, positionStates, switchStates, switchStates, lightStates);
void takeOff();
void airborne();
void land();
void grounded();
void checTakeOffStatus();
void checkLandingStatus();
void gearUp();
void abortFlight();

int main() {
    grounded();

    return 0;
}

void printStatus(planeStates planeState, positionStates leverState, positionStates valveState, switchStates limitSwitchState, switchStates squatSwitchState, lightStates lightState) {
    printf("Plane status: %s\n", PLANESTATES[planeState]);
    printf("Lever status: %s\n", POSITIONSTATES[leverState]);
    printf("Valve status: %s\n", POSITIONSTATES[valveState]);
    printf("Limit Switch status: %s\n", SWITCHSTATES[limitSwitchState]);
    printf("Squat Switch status: %s\n", SWITCHSTATES[squatSwitchState]);
    printf("Light status: %s\n", LIGHTSTATES[lightState]);
}

void grounded() {
    if (endJourney) return

    printf("Plane is being grounded, ready for flight.\n");

    planeState =  GROUNDED;
    leverState =  DOWN;
    valveState =  DOWN;
    limitSwitchState = OPENED;
    squatSwitchState = CLOSED;
    lightState = GREEN;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    takeOff();
    abortFlight();
}

void abortFlight() {
    printf("Flight has been aborted...\n");

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);
}

void takeOff() {
    printf("Plane has taken off.\n");

    planeState =  TAKEOFF;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    checkTakeOffStatus();
}

void checkTakeOffStatus() {
    squatSwitchState = OPENED;

    printf("Checking status of Squat Switch... It is open\n");

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    gearUp();
}

void gearUp() {
    printf("Raising gears...\n");

    leverState =  RISING;
    valveState =  UP;
    lightState =  RED;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    airborne();
}

void airborne() {
    printf("Plane is airborne currently.\n");

    planeState = AIRBORNE;
    leverState = UP;
    limitSwitchState = CLOSED;
    lightState = OFF;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    land();
}

void checkLandingStatus() {
    printf("Preparing to land...\n");

    planeState = LAND;
    leverState = FALLING;
    valveState = DOWN;
    lightState = RED;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    land();
}

void land() {
    printf("Plane landed successfully!\n");

    planeState = GROUNDED;
    leverState = DOWN;
    lightState = GREEN;
    endJourney = 1;

    printStatus(planeState, leverState, valveState, limitSwitchState, squatSwitchState, lightState);

    grounded();
}
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.