diff --git a/src/modules/land_detector/VtolLandDetector.cpp b/src/modules/land_detector/VtolLandDetector.cpp index 6729d98647..1f6e962acf 100644 --- a/src/modules/land_detector/VtolLandDetector.cpp +++ b/src/modules/land_detector/VtolLandDetector.cpp @@ -40,6 +40,7 @@ */ #include +#include #include "VtolLandDetector.h" @@ -94,4 +95,13 @@ bool VtolLandDetector::_get_landed_state() return landed; } +bool VtolLandDetector::_get_freefall_state() +{ + bool free_fall_detected = + MulticopterLandDetector::_get_freefall_state(); // true if falling or in a parabolic flight (low gravity) + + // only return a positive free fall detected if not in fixed-wing mode + return _vehicle_status.vehicle_type != vehicle_status_s::VEHICLE_TYPE_FIXED_WING && free_fall_detected; +} + } // namespace land_detector diff --git a/src/modules/land_detector/VtolLandDetector.h b/src/modules/land_detector/VtolLandDetector.h index 681f6edcb8..d159728636 100644 --- a/src/modules/land_detector/VtolLandDetector.h +++ b/src/modules/land_detector/VtolLandDetector.h @@ -59,6 +59,7 @@ protected: void _update_topics() override; bool _get_landed_state() override; bool _get_maybe_landed_state() override; + bool _get_freefall_state() override; private: