From a37d210189fc5b8d2d4ba99d828b87a3b42d68a1 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Wed, 2 Jun 2021 17:14:00 +0200 Subject: [PATCH] new method: waiting until robot unit is running --- .../RobotUnitComponentPlugin.cpp | 20 ++++++++++++++++++- .../RobotUnitComponentPlugin.h | 3 +++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp index 7c120b3cc..b669bf0db 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp @@ -1,4 +1,6 @@ #include "RobotUnitComponentPlugin.h" +#include "ArmarXCore/util/CPPUtility/Pointer.h" +#include <thread> namespace armarx::plugins { @@ -112,7 +114,11 @@ namespace armarx::plugins { _deactivated = true; } -} + + + + +} // namespace armarx::plugins namespace armarx { @@ -130,6 +136,18 @@ namespace armarx { return *plugin; } + + void RobotUnitComponentPluginUser::waitUntilRobotUnitIsRunning() const + { + ARMARX_INFO << "Waiting until robot unit is running ..."; + + while ((isNullptr(getRobotUnit()) or (not getRobotUnit()->isRunning()))) + { + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + + ARMARX_INFO << "Robot unit is up and running."; + } } diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h index 18616020e..5b8369776 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h @@ -78,7 +78,10 @@ namespace armarx { public: RobotUnitComponentPluginUser(); + RobotUnitInterfacePrx getRobotUnit() const; + void waitUntilRobotUnitIsRunning() const; + plugins::RobotUnitComponentPlugin& getRobotUnitComponentPlugin(); private: armarx::plugins::RobotUnitComponentPlugin* plugin = nullptr; -- GitLab