From dfa6230ad6c98ed36c55f305489eed85966d51e6 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Mon, 5 Nov 2018 18:01:17 +0100 Subject: [PATCH] logic: Reduced delays when combining TaskDecoratorRepeat and TaskSelector --- src/lib/utility/scheduling/TaskDecoratorRepeat.cpp | 2 +- src/lib/utility/scheduling/TaskGroupSelector.cpp | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lib/utility/scheduling/TaskDecoratorRepeat.cpp b/src/lib/utility/scheduling/TaskDecoratorRepeat.cpp index 64d63517..8c20193e 100644 --- a/src/lib/utility/scheduling/TaskDecoratorRepeat.cpp +++ b/src/lib/utility/scheduling/TaskDecoratorRepeat.cpp @@ -28,7 +28,7 @@ Task::TaskState TaskDecoratorRepeat::doUpdate(std::shared_ptr blackb } else if (state == Task::STATE_FAILURE) { - state = m_exitState; + return m_exitState; } break; } diff --git a/src/lib/utility/scheduling/TaskGroupSelector.cpp b/src/lib/utility/scheduling/TaskGroupSelector.cpp index eac3665d..91679b30 100644 --- a/src/lib/utility/scheduling/TaskGroupSelector.cpp +++ b/src/lib/utility/scheduling/TaskGroupSelector.cpp @@ -1,6 +1,7 @@ #include "TaskGroupSelector.h" TaskGroupSelector::TaskGroupSelector() + : m_taskIndex(0) { } @@ -20,20 +21,21 @@ Task::TaskState TaskGroupSelector::doUpdate(std::shared_ptr blackboa { return STATE_FAILURE; } - else if (m_taskIndex < 0) - { - return STATE_SUCCESS; - } TaskState state = m_taskRunners[m_taskIndex]->update(blackboard); if (state == STATE_FAILURE) { m_taskIndex++; + + if (m_taskIndex >= int(m_taskRunners.size())) + { + return STATE_FAILURE; + } } else if (state == STATE_SUCCESS) { - m_taskIndex = -1; + return STATE_SUCCESS; } else if (state == STATE_HOLD) {