diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp index 7c120b3cc4db3aabbf6b184e5d747d3014ae0a61..b669bf0db9f9b3ca426e25062259373122ce25ef 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 18616020e0683a70e6fcb0f95c7e7a09939db357..5b8369776c1f67d7f0ef24db704d3a37625e16e5 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;