From 77975d3233b690916ddf16b8c087658449679bc0 Mon Sep 17 00:00:00 2001 From: Fabian Peller <fabian.peller-konrad@kit.edu> Date: Thu, 12 Oct 2023 18:05:58 +0200 Subject: [PATCH] added SpecializedSKillProxy that takes a ParamType --- .../libraries/skills/provider/SkillProxy.h | 2 +- .../skills/provider/SpecializedSkillProxy.cpp | 8 ++++ .../skills/provider/SpecializedSkillProxy.h | 41 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp create mode 100644 source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h diff --git a/source/RobotAPI/libraries/skills/provider/SkillProxy.h b/source/RobotAPI/libraries/skills/provider/SkillProxy.h index 06f034a9c..8f0fb34be 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 000000000..1074f5499 --- /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 000000000..37ecd5a77 --- /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 -- GitLab