diff --git a/flight/libraries/sanitycheck.c b/flight/libraries/sanitycheck.c index 3564898a6..13bca13be 100644 --- a/flight/libraries/sanitycheck.c +++ b/flight/libraries/sanitycheck.c @@ -287,6 +287,17 @@ static bool check_stabilization_settings(int index, bool multirotor, bool copter return false; } + + // if cruise control, ensure rate or acro are not set + if (modes[FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_THRUST] == FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_CRUISECONTROL) { + for (uint32_t i = 0; i < FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_YAW; i++) { + if ((modes[i] == FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_RATE || + modes[i] == FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_ACRO)) { + return false; + } + } + } + // Warning: This assumes that certain conditions in the XML file are met. That // FLIGHTMODESETTINGS_STABILIZATION1SETTINGS_MANUAL has the same numeric value for each channel // and is the same for STABILIZATIONDESIRED_STABILIZATIONMODE_MANUAL