diff --git a/ArduPlane/AP_Arming.cpp b/ArduPlane/AP_Arming.cpp index e7f5283cb6..05426b366a 100644 --- a/ArduPlane/AP_Arming.cpp +++ b/ArduPlane/AP_Arming.cpp @@ -35,7 +35,7 @@ bool AP_Arming_Plane::pre_arm_checks(bool report) // Check airspeed sensor ret &= AP_Arming::airspeed_checks(report); - if (plane.g.long_fs_timeout < plane.g.short_fs_timeout) { + if (plane.g.long_fs_timeout < plane.g.short_fs_timeout && plane.g.short_fs_action != SHORT_FS_ACTION_DISABLED) { if (report) { gcs().send_text(MAV_SEVERITY_CRITICAL, "PreArm: FS_LONG_TIMEOUT < FS_SHORT_TIMEOUT"); } diff --git a/ArduPlane/Parameters.cpp b/ArduPlane/Parameters.cpp index fb5e2db73b..08497da975 100644 --- a/ArduPlane/Parameters.cpp +++ b/ArduPlane/Parameters.cpp @@ -501,7 +501,7 @@ const AP_Param::Info Plane::var_info[] = { // @Param: FS_SHORT_ACTN // @DisplayName: Short failsafe action // @Description: The action to take on a short (FS_SHORT_TIMEOUT) failsafe event. A short failsafe even can be triggered either by loss of RC control (see THR_FS_VALUE) or by loss of GCS control (see FS_GCS_ENABL). If in CIRCLE or RTL mode this parameter is ignored. A short failsafe event in stabilization and manual modes will cause an change to CIRCLE mode if FS_SHORT_ACTN is 0 or 1, and a change to FBWA mode if FS_SHORT_ACTN is 2. In all other modes (AUTO, GUIDED and LOITER) a short failsafe event will cause no mode change is FS_SHORT_ACTN is set to 0, will cause a change to CIRCLE mode if set to 1 and will change to FBWA mode if set to 2. Please see the documentation for FS_LONG_ACTN for the behaviour after FS_LONG_TIMEOUT seconds of failsafe. - // @Values: 0:CIRCLE/no change(if already in AUTO|GUIDED|LOITER),1:CIRCLE,2:FBWA + // @Values: 0:CIRCLE/no change(if already in AUTO|GUIDED|LOITER),1:CIRCLE,2:FBWA,3:Disable // @User: Standard GSCALAR(short_fs_action, "FS_SHORT_ACTN", 0), diff --git a/ArduPlane/Plane.h b/ArduPlane/Plane.h index 9c08ca23d5..1d25ad0140 100644 --- a/ArduPlane/Plane.h +++ b/ArduPlane/Plane.h @@ -857,7 +857,7 @@ private: void set_target_altitude_proportion(const Location &loc, float proportion); void constrain_target_altitude_location(const Location &loc1, const Location &loc2); int32_t calc_altitude_error_cm(void); - void check_minimum_altitude(void); + void check_fbwb_minimum_altitude(void); void reset_offset_altitude(void); void set_offset_altitude_location(const Location &loc); bool above_location_current(const Location &loc); diff --git a/ArduPlane/altitude.cpp b/ArduPlane/altitude.cpp index 9f7915f049..5113834418 100644 --- a/ArduPlane/altitude.cpp +++ b/ArduPlane/altitude.cpp @@ -312,7 +312,7 @@ int32_t Plane::calc_altitude_error_cm(void) /* check for FBWB_min_altitude_cm violation */ -void Plane::check_minimum_altitude(void) +void Plane::check_fbwb_minimum_altitude(void) { if (g.FBWB_min_altitude_cm == 0) { return; diff --git a/ArduPlane/navigation.cpp b/ArduPlane/navigation.cpp index a209f5b67a..55fca1f519 100644 --- a/ArduPlane/navigation.cpp +++ b/ArduPlane/navigation.cpp @@ -288,8 +288,7 @@ void Plane::update_fbwb_speed_height(void) target_altitude.last_elevator_input = elevator_input; } - // check for FBWB altitude limit - check_minimum_altitude(); + check_fbwb_minimum_altitude(); altitude_error_cm = calc_altitude_error_cm();