-
Notifications
You must be signed in to change notification settings - Fork 7
FC Control
Hrisabh Yadav edited this page Nov 14, 2025
·
1 revision
Flight control system for managing flight status, modes, and commands.
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;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;typedef enum {
BACK_FLIP // Back flip direction
} flip_direction_e;-
flightstatus_e FlightStatus_Get(void)- Get current flight status -
bool FlightStatus_Check(flightstatus_e status)- Check specific status
-
bool FlightMode_Check(flight_mode_e MODE)- Check if mode active -
void FlightMode_Set(flight_mode_e MODE)- Set flight mode
-
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
// 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);MagisV2 © 2025 Drona Aviation | Licensed under GPL-3.0 | Report Issues