From 6ec9ff64d1cde006277bd8dc4e72f317119c50e8 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 29 Nov 2017 15:42:04 +0100 Subject: [PATCH] FlightTaskManual/Orbit: make sure we are not required stick input data during orbit --- src/lib/FlightTasks/tasks/FlightTaskManual.cpp | 9 ++++++++- src/lib/FlightTasks/tasks/FlightTaskManual.hpp | 1 + src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/FlightTasks/tasks/FlightTaskManual.cpp b/src/lib/FlightTasks/tasks/FlightTaskManual.cpp index 65738f6cda..55b67e486f 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskManual.cpp +++ b/src/lib/FlightTasks/tasks/FlightTaskManual.cpp @@ -90,7 +90,14 @@ bool FlightTaskManual::initializeSubscriptions(SubscriptionArray &subscription_a bool FlightTaskManual::updateInitialize() { - return FlightTask::updateInitialize() && _evaluateSticks(); + bool ret = FlightTask::updateInitialize(); + const bool sticks_available = _evaluateSticks(); + + if (_sticks_data_required) { + ret = ret && sticks_available; + } + + return ret; } bool FlightTaskManual::update() diff --git a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp index a2625e27e3..f06f5bc431 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp +++ b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp @@ -63,6 +63,7 @@ public: protected: matrix::Vector _sticks; bool _evaluateSticks(); + bool _sticks_data_required = true; /**< let sibling task define if it depends on stick data */ float get_input_frame_yaw() { return _yaw; } diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp index 1ab8c7974e..b2bfcee1c2 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp +++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp @@ -47,7 +47,9 @@ using namespace matrix; FlightTaskOrbit::FlightTaskOrbit(control::SuperBlock *parent, const char *name) : FlightTaskManual(parent, name) -{} +{ + _sticks_data_required = false; +} bool FlightTaskOrbit::activate() {