Plane: Rearrange header to save flash

Saves 392 bytes of flash on CubeBlack builds without increasing RAM
consumption at all. This also translates to a speed up as some of these
are looked up every loop multiple times.
This commit is contained in:
Michael du Breuil 2019-09-09 12:49:52 -07:00 committed by Andrew Tridgell
parent b92473111c
commit cf58f68e49

View File

@ -356,13 +356,13 @@ private:
struct { struct {
// Used to track if the value on channel 3 (throtttle) has fallen below the failsafe threshold // Used to track if the value on channel 3 (throtttle) has fallen below the failsafe threshold
// RC receiver should be set up to output a low throttle value when signal is lost // RC receiver should be set up to output a low throttle value when signal is lost
bool rc_failsafe:1; bool rc_failsafe;
// has the saved mode for failsafe been set? // has the saved mode for failsafe been set?
bool saved_mode_set:1; bool saved_mode_set;
// true if an adsb related failsafe has occurred // true if an adsb related failsafe has occurred
bool adsb:1; bool adsb;
// saved flight mode // saved flight mode
enum Mode::Number saved_mode_number; enum Mode::Number saved_mode_number;
@ -467,59 +467,26 @@ private:
uint32_t accel_event_ms; uint32_t accel_event_ms;
uint32_t start_time_ms; uint32_t start_time_ms;
} takeoff_state; } takeoff_state;
// ground steering controller state // ground steering controller state
struct { struct {
// Direction held during phases of takeoff and landing centidegrees // Direction held during phases of takeoff and landing centidegrees
// A value of -1 indicates the course has not been set/is not in use // A value of -1 indicates the course has not been set/is not in use
// this is a 0..36000 value, or -1 for disabled // this is a 0..36000 value, or -1 for disabled
int32_t hold_course_cd; int32_t hold_course_cd = -1;
// locked_course and locked_course_cd are used in stabilize mode // locked_course and locked_course_cd are used in stabilize mode
// when ground steering is active, and for steering in auto-takeoff // when ground steering is active, and for steering in auto-takeoff
bool locked_course; bool locked_course;
float locked_course_err; float locked_course_err;
} steer_state { -1, false, 0 }; } steer_state;
// flight mode specific // flight mode specific
struct { struct {
// Flag for using gps ground course instead of INS yaw. Set false when takeoff command in process.
bool takeoff_complete:1;
// are we headed to the land approach waypoint? Works for any nav type
bool wp_is_land_approach:1;
// should we fly inverted?
bool inverted_flight:1;
// should we enable cross-tracking for the next waypoint?
bool next_wp_crosstrack:1;
// should we use cross-tracking for this waypoint?
bool crosstrack:1;
// in FBWA taildragger takeoff mode
bool fbwa_tdrag_takeoff_mode:1;
// have we checked for an auto-land?
bool checked_for_autoland:1;
// Altitude threshold to complete a takeoff command in autonomous modes. Centimeters
// are we in idle mode? used for balloon launch to stop servo
// movement until altitude is reached
bool idle_mode:1;
// used to 'wiggle' servos in idle mode to prevent them freezing
// at high altitudes
uint8_t idle_wiggle_stage;
// Altitude threshold to complete a takeoff command in autonomous // Altitude threshold to complete a takeoff command in autonomous
// modes. Centimeters above home // modes. Centimeters above home
int32_t takeoff_altitude_rel_cm; int32_t takeoff_altitude_rel_cm;
// Minimum pitch to hold during takeoff command execution. Hundredths of a degree
int16_t takeoff_pitch_cd;
// Begin leveling out the enforced takeoff pitch angle min at this height to reduce/eliminate overshoot // Begin leveling out the enforced takeoff pitch angle min at this height to reduce/eliminate overshoot
int32_t height_below_takeoff_to_level_off_cm; int32_t height_below_takeoff_to_level_off_cm;
@ -527,9 +494,6 @@ private:
// to control ground takeoff // to control ground takeoff
float highest_airspeed; float highest_airspeed;
// initial pitch. Used to detect if nose is rising in a tail dragger
int16_t initial_pitch_cd;
// turn angle for next leg of mission // turn angle for next leg of mission
float next_turn_angle {90}; float next_turn_angle {90};
@ -554,11 +518,47 @@ private:
// barometric altitude at start of takeoff // barometric altitude at start of takeoff
float baro_takeoff_alt; float baro_takeoff_alt;
// initial pitch. Used to detect if nose is rising in a tail dragger
int16_t initial_pitch_cd;
// Minimum pitch to hold during takeoff command execution. Hundredths of a degree
int16_t takeoff_pitch_cd;
// used to 'wiggle' servos in idle mode to prevent them freezing
// at high altitudes
uint8_t idle_wiggle_stage;
// Flag for using gps ground course instead of INS yaw. Set false when takeoff command in process.
bool takeoff_complete;
// are we headed to the land approach waypoint? Works for any nav type
bool wp_is_land_approach;
// should we fly inverted?
bool inverted_flight;
// should we enable cross-tracking for the next waypoint?
bool next_wp_crosstrack;
// should we use cross-tracking for this waypoint?
bool crosstrack;
// in FBWA taildragger takeoff mode
bool fbwa_tdrag_takeoff_mode;
// have we checked for an auto-land?
bool checked_for_autoland;
// Altitude threshold to complete a takeoff command in autonomous modes. Centimeters
// are we in idle mode? used for balloon launch to stop servo
// movement until altitude is reached
bool idle_mode;
// are we in VTOL mode in AUTO? // are we in VTOL mode in AUTO?
bool vtol_mode:1; bool vtol_mode;
// are we doing loiter mode as a VTOL? // are we doing loiter mode as a VTOL?
bool vtol_loiter:1; bool vtol_loiter;
} auto_state; } auto_state;
struct { struct {
@ -583,13 +583,13 @@ private:
struct { struct {
// on hard landings, only check once after directly a landing so you // on hard landings, only check once after directly a landing so you
// don't trigger a crash when picking up the aircraft // don't trigger a crash when picking up the aircraft
bool checkedHardLanding:1; bool checkedHardLanding;
// crash detection. True when we are crashed // crash detection. True when we are crashed
bool is_crashed:1; bool is_crashed;
// impact detection flag. Expires after a few seconds via impact_timer_ms // impact detection flag. Expires after a few seconds via impact_timer_ms
bool impact_detected:1; bool impact_detected;
// debounce timer // debounce timer
uint32_t debounce_timer_ms; uint32_t debounce_timer_ms;
@ -771,7 +771,7 @@ private:
uint32_t last_elev_check_us; uint32_t last_elev_check_us;
} target_altitude {}; } target_altitude {};
float relative_altitude = 0.0f; float relative_altitude;
// INS variables // INS variables
// The main loop execution time. Seconds // The main loop execution time. Seconds