diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp index 383de616a6001cd7358a2fd5604c44f7e669ecc6..1e94a395814376eb08b20e45f5d043f21fa6dbb4 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp @@ -1,53 +1,64 @@ #include "RobotUnitComponentPlugin.h" -namespace armarx +namespace armarx::plugins { - namespace plugins + void RobotUnitComponentPlugin::preOnInitComponent() { - - void RobotUnitComponentPlugin::preOnInitComponent() - { - parent<Component>().usingProxyFromProperty(PROPERTY_NAME); - } - - void RobotUnitComponentPlugin::preOnConnectComponent() + if (_robotUnitName.empty()) { - parent<Component>().getProxyFromProperty(_robotUnit, PROPERTY_NAME); + parent<Component>().getProperty(_robotUnitName, PROPERTY_NAME); } + parent<Component>().usingProxy(_robotUnitName); + } - void RobotUnitComponentPlugin::postCreatePropertyDefinitions(armarx::PropertyDefinitionsPtr& properties) - { - if (!properties->hasDefinition(PROPERTY_NAME)) - { - properties->defineRequiredProperty<std::string>( - PROPERTY_NAME, - "Name of the RobotUnit"); - } - } + void RobotUnitComponentPlugin::preOnConnectComponent() + { + parent<Component>().getProxy(_robotUnit, _robotUnitName); + } - RobotUnitInterfacePrx RobotUnitComponentPlugin::getRobotUnit() + void RobotUnitComponentPlugin::postCreatePropertyDefinitions(armarx::PropertyDefinitionsPtr& properties) + { + if (!properties->hasDefinition(PROPERTY_NAME)) { - return _robotUnit; + properties->defineRequiredProperty<std::string>( + PROPERTY_NAME, + "Name of the RobotUnit"); } + } + RobotUnitInterfacePrx RobotUnitComponentPlugin::getRobotUnit() const + { + return _robotUnit; + } + void RobotUnitComponentPlugin::setRobotUnitName(const std::string& name) + { + ARMARX_CHECK_NOT_EMPTY(name); + ARMARX_CHECK_EMPTY(_robotUnitName); + _robotUnitName = name; + } + const std::string& RobotUnitComponentPlugin::getRobotUnitName() const + { + return _robotUnitName; } } namespace armarx { - RobotUnitComponentPluginUser::RobotUnitComponentPluginUser() { addPlugin(plugin); } - RobotUnitInterfacePrx RobotUnitComponentPluginUser::getRobotUnit() + RobotUnitInterfacePrx RobotUnitComponentPluginUser::getRobotUnit() const { return plugin->getRobotUnit(); } - + plugins::RobotUnitComponentPlugin& RobotUnitComponentPluginUser::getRobotUnitComponentPlugin() + { + return *plugin; + } } diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h index 4dc53dcb9fff70332663f1dd4a0211f3fdfd916d..b3cbf9a3b1e43d262370fc3b6082d07612a9c7cc 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h @@ -20,11 +20,14 @@ namespace armarx void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override; - RobotUnitInterfacePrx getRobotUnit(); + RobotUnitInterfacePrx getRobotUnit() const; + void setRobotUnitName(const std::string& name); + const std::string& getRobotUnitName() const; private: static constexpr const char* PROPERTY_NAME = "RobotUnitName"; RobotUnitInterfacePrx _robotUnit; + std::string _robotUnitName; }; } @@ -39,8 +42,8 @@ namespace armarx { public: RobotUnitComponentPluginUser(); - RobotUnitInterfacePrx getRobotUnit(); - + RobotUnitInterfacePrx getRobotUnit() const; + plugins::RobotUnitComponentPlugin& getRobotUnitComponentPlugin(); private: armarx::plugins::RobotUnitComponentPlugin* plugin = nullptr; };