diff --git a/source/RobotAPI/libraries/skills/provider/SkillProxy.h b/source/RobotAPI/libraries/skills/provider/SkillProxy.h index 06f034a9c789aa3b35b61b4a9a746b68c2eac471..8f0fb34be58e7d20fec5778795ead2a34ab80a3c 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProxy.h +++ b/source/RobotAPI/libraries/skills/provider/SkillProxy.h @@ -29,7 +29,7 @@ namespace armarx // Utiliy methods aron::data::DictPtr getDefaultParameters(const std::string& profileName = "root"); - private: + protected: manager::dti::SkillManagerInterfacePrx manager; SkillDescription skillDescription; }; diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1074f549947ce61b4b96e3f698caab84a5149488 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp @@ -0,0 +1,8 @@ +#include "SkillProxy.h" + +namespace armarx +{ + namespace skills + { + } // namespace skills +} // namespace armarx diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h new file mode 100644 index 0000000000000000000000000000000000000000..37ecd5a7771f09f99d11c0513cdcf95fe7c5d8e0 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h @@ -0,0 +1,41 @@ +#pragma once + +#include "SkillProxy.h" + +namespace armarx +{ + namespace skills + { + template <class AronT> + class SpecializedSkillProxy : public SkillProxy + { + public: + using SkillProxy::SkillProxy; + + // Provide a similar API as the skillprovider + TerminatedSkillStatusUpdate + executeSkill(const std::string& executorName, const AronT& params) + { + return SkillProxy::executeSkill(executorName, params.toAron()); + } + + SkillExecutionID + executeSkillAsync(const std::string& executorName, const AronT& params = nullptr) + { + return SkillProxy::executeSkillAsync(executorName, params.toAron()); + } + + // Utiliy methods + AronT + getDefaultParameters(const std::string& profileName = "root") + { + auto dict = SkillProxy::getDefaultParameters(profileName); + if (dict) + { + return AronT::FromAron(dict); + } + return {}; + } + }; + } // namespace skills +} // namespace armarx