From 4d0dca5dd5739d05de9660ee45cf3ff8ec1d219b Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Sat, 16 Dec 2017 10:14:15 +0100 Subject: [PATCH] FlightTask: make applyCommandParameters getting called recursively & pass command by reference --- src/lib/FlightTasks/tasks/FlightTask.hpp | 2 +- src/lib/FlightTasks/tasks/FlightTaskManual.hpp | 2 +- src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp | 8 ++++---- src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/FlightTasks/tasks/FlightTask.hpp b/src/lib/FlightTasks/tasks/FlightTask.hpp index 11cb909fe0..42b784a793 100644 --- a/src/lib/FlightTasks/tasks/FlightTask.hpp +++ b/src/lib/FlightTasks/tasks/FlightTask.hpp @@ -76,7 +76,7 @@ public: * To be called to adopt parameters from an arrived vehicle command * @return true if accepted, false if declined */ - virtual bool applyCommandParameters(vehicle_command_s command) = 0; + virtual bool applyCommandParameters(const vehicle_command_s &command) { return true; }; /** * Call before activate() or update() diff --git a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp index 733a256fca..0f47613837 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp +++ b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp @@ -56,7 +56,7 @@ public: bool initializeSubscriptions(SubscriptionArray &subscription_array) override; - bool applyCommandParameters(vehicle_command_s command) override { return false; }; + bool applyCommandParameters(const vehicle_command_s &command) override { return FlightTask::applyCommandParameters(command); }; bool updateInitialize() override; diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp index 97d45e970d..183249bc08 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp +++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp @@ -51,16 +51,16 @@ FlightTaskOrbit::FlightTaskOrbit(control::SuperBlock *parent, const char *name) _sticks_data_required = false; } -bool FlightTaskOrbit::applyCommandParameters(vehicle_command_s command) +bool FlightTaskOrbit::applyCommandParameters(const vehicle_command_s &command) { - float &r = command.param3; /**< commanded radius */ - float &v = command.param4; /**< commanded velocity */ + const float &r = command.param3; /**< commanded radius */ + const float &v = command.param4; /**< commanded velocity */ if (math::isInRange(r, 5.f, 50.f) && fabs(v) < 10.f) { _r = r; _v = v; - return true; + return FlightTaskManual::applyCommandParameters(command); } return false; diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp index 142987a2d6..ce501f6f88 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp +++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp @@ -50,7 +50,7 @@ public: virtual ~FlightTaskOrbit() = default; - bool applyCommandParameters(vehicle_command_s command) override; + bool applyCommandParameters(const vehicle_command_s &command) override; bool activate() override;