diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 8b7a7f5bd6..f3061e82a7 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -2296,7 +2296,7 @@ Commander::run() } /* Check for failure detector status */ - if (_failure_detector.update(_status)) { + if (_failure_detector.update(_status, _vehicle_control_mode)) { _status.failure_detector_status = _failure_detector.getStatus(); _status_changed = true; diff --git a/src/modules/commander/failure_detector/FailureDetector.cpp b/src/modules/commander/failure_detector/FailureDetector.cpp index 4983414d42..2799e2dab0 100644 --- a/src/modules/commander/failure_detector/FailureDetector.cpp +++ b/src/modules/commander/failure_detector/FailureDetector.cpp @@ -47,11 +47,11 @@ FailureDetector::FailureDetector(ModuleParams *parent) : { } -bool FailureDetector::update(const vehicle_status_s &vehicle_status) +bool FailureDetector::update(const vehicle_status_s &vehicle_status, const vehicle_control_mode_s &vehicle_control_mode) { uint8_t previous_status = _status; - if (isAttitudeStabilized(vehicle_status)) { + if (vehicle_control_mode.flag_control_attitude_enabled) { updateAttitudeStatus(); if (_param_fd_ext_ats_en.get()) { @@ -69,23 +69,6 @@ bool FailureDetector::update(const vehicle_status_s &vehicle_status) return _status != previous_status; } -bool FailureDetector::isAttitudeStabilized(const vehicle_status_s &vehicle_status) -{ - bool attitude_is_stabilized{false}; - const uint8_t vehicle_type = vehicle_status.vehicle_type; - const uint8_t nav_state = vehicle_status.nav_state; - - if (vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING) { - attitude_is_stabilized = nav_state != vehicle_status_s::NAVIGATION_STATE_ACRO; - - } else if (vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING) { - attitude_is_stabilized = nav_state != vehicle_status_s::NAVIGATION_STATE_MANUAL && - nav_state != vehicle_status_s::NAVIGATION_STATE_ACRO; - } - - return attitude_is_stabilized; -} - void FailureDetector::updateAttitudeStatus() { vehicle_attitude_s attitude; diff --git a/src/modules/commander/failure_detector/FailureDetector.hpp b/src/modules/commander/failure_detector/FailureDetector.hpp index 959b6c145d..e158affa5f 100644 --- a/src/modules/commander/failure_detector/FailureDetector.hpp +++ b/src/modules/commander/failure_detector/FailureDetector.hpp @@ -48,11 +48,11 @@ #include #include - // subscriptions #include #include #include +#include #include #include #include @@ -73,11 +73,10 @@ class FailureDetector : public ModuleParams public: FailureDetector(ModuleParams *parent); - bool update(const vehicle_status_s &vehicle_status); + bool update(const vehicle_status_s &vehicle_status, const vehicle_control_mode_s &vehicle_control_mode); uint8_t getStatus() const { return _status; } private: - bool isAttitudeStabilized(const vehicle_status_s &vehicle_status); void updateAttitudeStatus(); void updateExternalAtsStatus(); void updateEscsStatus(const vehicle_status_s &vehicle_status);