Challenge

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

landinggear.c
 *
 *  Created on: Aug 3, 2023
 *      Author: Asus
 */

#include
#include
#include // For Sleep function (Windows)

// Define gear states
typedef enum {
    GEAR_UP,
    GEAR_DOWN,
    GEAR_TRANSIT,
} GearState;

// Define landing gear components
typedef struct {
    bool limitSwitchOpen;
    bool squatSwitchOpen;
    bool pressureOnNoseGear;
    bool directionValveUp;
} LandingGear;

// Assume the squat switch is open for the first 4 seconds and then closed after 4 seconds
bool simulateSquatSwitch(int timeElapsed) {
    return timeElapsed < 4>}

// Function to check if squat switch is open for 4 seconds
bool checkSquatSwitch()
{
    int timeElapsed = 0;
    while (timeElapsed < 4>        if (simulateSquatSwitch(timeElapsed)) {
            timeElapsed++;
            Sleep(1000); // Wait for 1 second (1000 milliseconds) - Windows
        } else {
            break;
        }
    }
    return true;
}

// Function to handle landing gear transitions
void transitionGearState(GearState* currentState, LandingGear* gear)
{
    switch (*currentState) {
    case GEAR_UP:
        if (!gear->squatSwitchOpen) {
            gear->directionValveUp = false;
            *currentState = GEAR_TRANSIT;
        }
        break;

    case GEAR_TRANSIT:
        if (gear->limitSwitchOpen) {
            *currentState = GEAR_DOWN;
        }
        break;

    case GEAR_DOWN:
        if (gear->squatSwitchOpen) {
            gear->directionValveUp = true;
            *currentState = GEAR_TRANSIT;
        }
        break;
    }
}

int main()
{
    // Initialize landing gear components
    GearState currentState = GEAR_UP;
    LandingGear gear = {
        .limitSwitchOpen = false,
        .squatSwitchOpen = false,
        .pressureOnNoseGear = false,
        .directionValveUp = false,
    };

    while (1) {
        // Simulate reading the actual hardware states
        // For the simulation, we will set some dummy values
        gear.limitSwitchOpen = true; // Assume the limit switch is open (gear down)
        gear.squatSwitchOpen = true; // Assume the squat switch is open (airborne)
        gear.pressureOnNoseGear = true; // Assume there's pressure on the nose gear

        // Check if squat switch is open for 4 seconds before raising gears
        if (currentState == GEAR_UP && gear.squatSwitchOpen && checkSquatSwitch()) {
            gear.directionValveUp = true;
            currentState = GEAR_TRANSIT;
        }

        // Handle gear transitions
        transitionGearState(¤tState, &gear);

        // Update lights based on gear state
        if (gear.directionValveUp) {
            // Set lights to indicate gears are raising
            printf("Lights: Raising gear\n");
        } else {
            // Set lights to indicate gears are lowering
            printf("Lights: Lowering gear\n");
        }

        // Control hydraulic pump based on gear state
        // ...

        // Simulate a delay for the loop (optional)
        Sleep(100); // Sleep for 100 milliseconds (Windows) or use usleep(100000) for Unix-based systems
    }

    return 0;
}

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.