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