From 87d6402ac977d59ea96c5be9e8aa9a45034f9b91 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Mon, 12 Jul 2021 09:30:12 +0200 Subject: [PATCH] Add function of plugin user to plugin --- .../RobotUnitComponentPlugin.cpp | 13 +++++++++++++ .../RobotUnitComponentPlugin.h | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp index 4e6e7966c..6647cf385 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp @@ -116,6 +116,19 @@ namespace armarx::plugins } + void RobotUnitComponentPlugin::waitUntilRobotUnitIsRunning(const std::function<bool ()>& termCond) const + { + ARMARX_INFO << "Waiting until robot unit is running ..."; + + while (not(termCond() or not isNullptr(getRobotUnit()) or getRobotUnit()->isRunning())) + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + + ARMARX_INFO << "Robot unit is up and running."; + } + + } // namespace armarx::plugins diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h index 80357a96e..4371934b9 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h @@ -34,6 +34,19 @@ namespace armarx } + /** + * @brief Waits until the robot unit is running. + * + * Although the robot unit proxy might be initialized (\see getRobotUnit()), the robot unit might + * not be fully initialized. + * + * @param termCond Termination condition. + * If it evaluates to true, waitUntilRobotUnitIsRunning returns without waiting + * for the robot unit to become available. + */ + void waitUntilRobotUnitIsRunning(const std::function<bool()>& termCond = [] {return false;}) const; + + //controllers public: -- GitLab