diff --git a/src/lib/FlightTasks/FlightTasks.cpp b/src/lib/FlightTasks/FlightTasks.cpp index 9eb7134daf..4c5ec5d8ea 100644 --- a/src/lib/FlightTasks/FlightTasks.cpp +++ b/src/lib/FlightTasks/FlightTasks.cpp @@ -133,7 +133,7 @@ const char *FlightTasks::errorToString(const int error) void FlightTasks::reActivate() { if (_current_task.task) { - _current_task.task->activate(); + _current_task.task->reActivate(); } } diff --git a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp index cbfaa76431..026ef7155b 100644 --- a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp +++ b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp @@ -52,6 +52,14 @@ bool FlightTaskAutoLineSmoothVel::activate() return ret; } +void FlightTaskAutoLineSmoothVel::reActivate() +{ + // Don't reset during takeoff TODO: Find a proper solution + // The issue here is that with a small increment of velocity setpoint (generated by this flight task), the + // land detector doesn't detect takeoff and without takeoff detection, the + // flight task is always reset. +} + void FlightTaskAutoLineSmoothVel::_setDefaultConstraints() { FlightTaskAuto::_setDefaultConstraints(); diff --git a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp index 2e38cb3808..bd88398c8c 100644 --- a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp +++ b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp @@ -50,6 +50,7 @@ public: virtual ~FlightTaskAutoLineSmoothVel() = default; bool activate() override; + void reActivate() override; protected: diff --git a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp index fa13927ad2..b314ae0b95 100644 --- a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp +++ b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp @@ -38,6 +38,11 @@ bool FlightTask::activate() return true; } +void FlightTask::reActivate() +{ + activate(); +} + bool FlightTask::updateInitialize() { _time_stamp_current = hrt_absolute_time(); diff --git a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp index 9501a45359..aa3e68951b 100644 --- a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp +++ b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp @@ -78,6 +78,11 @@ public: */ virtual bool activate(); + /** + * Call this to reset an active Flight Task + */ + virtual void reActivate(); + /** * To be called to adopt parameters from an arrived vehicle command * @return true if accepted, false if declined