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() {