From 365525269ece84ae22977070dfa071f84f5e7a67 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 1 Oct 2025 16:38:34 +0200 Subject: [PATCH] ManualControlSelector: simplify prioritization logic --- .../manual_control/ManualControlSelector.cpp | 60 +++---------------- 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/src/modules/manual_control/ManualControlSelector.cpp b/src/modules/manual_control/ManualControlSelector.cpp index ad7c8b7ed3..afb9c78139 100644 --- a/src/modules/manual_control/ManualControlSelector.cpp +++ b/src/modules/manual_control/ManualControlSelector.cpp @@ -94,67 +94,23 @@ bool ManualControlSelector::isInputValid(const manual_control_setpoint_s &input, break; case RcInMode::PriorityRcThenMavlinkAscending: - if (isRc(input.data_source)) { - match = true; - - } else if (isMavlink(input.data_source)) { - if (!_setpoint.valid) { - match = true; - - } else if (isMavlink(_setpoint.data_source)) { - match = input.data_source <= _setpoint.data_source; - } - } - + match = !_setpoint.valid || (input.data_source <= _setpoint.data_source); break; case RcInMode::PriorityMavlinkAscendingThenRc: - if (isMavlink(input.data_source)) { - if (!_setpoint.valid || isRc(_setpoint.data_source)) { - match = true; - - } else if (isMavlink(_setpoint.data_source)) { - match = input.data_source <= _setpoint.data_source; - } - - } else if (isRc(input.data_source)) { - if (!_setpoint.valid || isRc(_setpoint.data_source)) { - match = true; - } - } - + match = !_setpoint.valid + || (isRc(input.data_source) && isRc(_setpoint.data_source)) + || (isMavlink(input.data_source) && (isRc(_setpoint.data_source) || input.data_source <= _setpoint.data_source)); break; case RcInMode::PriorityRcThenMavlinkDescending: - if (isRc(input.data_source)) { - match = true; - - } else if (isMavlink(input.data_source)) { - if (!_setpoint.valid) { - match = true; - - } else if (isMavlink(_setpoint.data_source)) { - match = input.data_source >= _setpoint.data_source; - } - } - + match = !_setpoint.valid + || isRc(input.data_source) + || (isMavlink(input.data_source) && isMavlink(_setpoint.data_source) && input.data_source >= _setpoint.data_source); break; case RcInMode::PriorityMavlinkDescendingThenRc: - if (isMavlink(input.data_source)) { - if (!_setpoint.valid || isRc(_setpoint.data_source)) { - match = true; - - } else if (isMavlink(_setpoint.data_source)) { - match = input.data_source >= _setpoint.data_source; - } - - } else if (isRc(input.data_source)) { - if (!_setpoint.valid || isRc(_setpoint.data_source)) { - match = true; - } - } - + match = !_setpoint.valid || (input.data_source >= _setpoint.data_source); break; case RcInMode::DisableManualControl: