Skip to content

FC Control

Hrisabh Yadav edited this page Nov 14, 2025 · 1 revision

FC-Control.h

Flight control system for managing flight status, modes, and commands.

Enumerations

flightstatus_e

typedef enum {
    FS_ACCEL_GYRO_CALIBRATION = 0,
    FS_MAG_CALIBARATION,
    FS_LOW_BATTERY,
    FS_INFLIGHT_LOW_BATTERY,
    FS_CRASHED,
    FS_SIGNAL_LOSS,
    FS_NOT_OK_TO_ARM,
    FS_OK_TO_ARM,
    FS_ARMED
} flightstatus_e;

flight_mode_e

typedef enum {
    ANGLE,            // Angle mode: stabilized flight
    RATE,             // Rate mode: manual rate control
    MAGHOLD,          // Magnetic hold: maintain heading
    HEADFREE,         // Head-free mode: orientation-independent
    ATLTITUDEHOLD,    // Altitude hold: maintain altitude
    THROTTLE_MODE     // Throttle mode configuration
} flight_mode_e;

flip_direction_e

typedef enum {
    BACK_FLIP    // Back flip direction
} flip_direction_e;

Functions

Flight Status

  • flightstatus_e FlightStatus_Get(void) - Get current flight status
  • bool FlightStatus_Check(flightstatus_e status) - Check specific status

Flight Modes

  • bool FlightMode_Check(flight_mode_e MODE) - Check if mode active
  • void FlightMode_Set(flight_mode_e MODE) - Set flight mode

Commands

  • void Command_TakeOff(uint16_t height = 150) - Takeoff to height
  • void Command_Land(uint8_t landSpeed = 105) - Land at speed
  • void Command_Flip(flip_direction_e direction) - Perform flip
  • bool Command_Arm(void) - Arm system
  • bool Command_DisArm(void) - Disarm system
  • void setheadFreeModeHeading(int16_t heading) - Set head-free reference

Usage Example

// Check system status
if (FlightStatus_Check(FS_OK_TO_ARM)) {
    Command_Arm();
}

// Set flight mode and takeoff
if (FlightStatus_Check(FS_ARMED)) {
    FlightMode_Set(ANGLE);
    Command_TakeOff(200);
}

// Check current mode
if (FlightMode_Check(ATLTITUDEHOLD)) {
    // Altitude hold is active
}

// Emergency landing
Command_Land(120);

Clone this wiki locally