diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp index 212869ba6eec58b2c10643eb00daba8ae2f4be54..720304e622303a74a0390c17297b0ec4a17dd91c 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp @@ -162,7 +162,7 @@ namespace armarx aron::type::visit(v, aron_accepted_type); auto aron_args = aron::data::Dict::DynamicCastAndCheck(v.createdAron); - exInfo.parameterization.params = aron_args->toAronDictPtr(); + exInfo.params = aron_args->toAronDictPtr(); } ARMARX_INFO << "Executing skill from GUI: " << selectedSkill.providerName << "/" << selectedSkill.skillName; diff --git a/source/RobotAPI/interface/skills/SkillManagerInterface.ice b/source/RobotAPI/interface/skills/SkillManagerInterface.ice index 5798328217b497e30f0f75849cd1f6ec15de1880..5233947af9eaf0696d4e8fcdfa17ec4e6a8a5fbf 100644 --- a/source/RobotAPI/interface/skills/SkillManagerInterface.ice +++ b/source/RobotAPI/interface/skills/SkillManagerInterface.ice @@ -22,24 +22,13 @@ #pragma once +#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice> #include <RobotAPI/interface/skills/SkillProviderInterface.ice> module armarx { module skills { - module callback - { - module dti - { - interface SkillProviderCallbackInterface - { - // used for callbacks from providers to update their skill execution status - void updateStatusForSkill(provider::dto::SkillStatusUpdate statusUpdate); - } - } - } - module manager { module dto @@ -49,7 +38,7 @@ module armarx { string providerName; string skillName; - provider::dto::SkillParameterization parameterization; + aron::data::dto::Dict params; }; struct ProviderInfo diff --git a/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice b/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice index c525d76d1c7b52efc419d7ae3d7e873f8a491ddc..b41709be3c847167ba48933d8b9a8a2d9e72db16 100644 --- a/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice +++ b/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice @@ -22,10 +22,8 @@ #pragma once -#include <RobotAPI/interface/aron.ice> #include <RobotAPI/interface/skills/SkillProviderInterface.ice> - module armarx { module skills diff --git a/source/RobotAPI/interface/skills/SkillProviderInterface.ice b/source/RobotAPI/interface/skills/SkillProviderInterface.ice index a3e1bccdebef5d010b7a616e254fe21bd93b2447..ffd6f72816c79ad2f37cda69cafd07563e869c78 100644 --- a/source/RobotAPI/interface/skills/SkillProviderInterface.ice +++ b/source/RobotAPI/interface/skills/SkillProviderInterface.ice @@ -98,8 +98,7 @@ module armarx }; dictionary<string, SkillStatusUpdate> SkillStatusUpdateMap; - - }; + } module dti { @@ -109,7 +108,7 @@ module armarx dto::SkillDescriptionMap getSkills(); dto::SkillStatusUpdate getSkillExecutionStatus(string name); void executeSkill(dto::SkillExecutionInfo executionInfo); - void abortSkill(string skill); + dto::SkillStatusUpdate abortSkill(string skill); }; dictionary<string, SkillProviderInterface*> SkillProviderMap; @@ -118,4 +117,4 @@ module armarx } } -#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice> +//#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice> diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp index e0e833c35df85b6eee53e32d39269b9da42260c9..43e314fc827148c42a05e89d462964b84fdeed14 100644 --- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp +++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp @@ -28,13 +28,13 @@ namespace armarx::skills::segment void SkillEventCoreSegment::addSkillUpdateEvent(const skills::provider::dto::SkillStatusUpdate& update) { // add update for skill to memory - static std::map<armarx::skills::provider::dto::ExecutionStatus, std::string> ExecutionStatus2String = { - {armarx::skills::provider::dto::ExecutionStatus::Idle, "Idle"}, - {armarx::skills::provider::dto::ExecutionStatus::Scheduled, "Scheduled"}, - {armarx::skills::provider::dto::ExecutionStatus::Running, "Running"}, - {armarx::skills::provider::dto::ExecutionStatus::Aborted, "Aborted"}, - {armarx::skills::provider::dto::ExecutionStatus::Failed, "Failed"}, - {armarx::skills::provider::dto::ExecutionStatus::Succeeded, "Succeeded"} + static std::map<armarx::skills::provider::dto::Execution::Status, std::string> ExecutionStatus2String = { + {armarx::skills::provider::dto::Execution::Status::Idle, "Idle"}, + {armarx::skills::provider::dto::Execution::Status::Scheduled, "Scheduled"}, + {armarx::skills::provider::dto::Execution::Status::Running, "Running"}, + {armarx::skills::provider::dto::Execution::Status::Aborted, "Aborted"}, + {armarx::skills::provider::dto::Execution::Status::Failed, "Failed"}, + {armarx::skills::provider::dto::Execution::Status::Succeeded, "Succeeded"} }; // create commit about new update @@ -44,7 +44,7 @@ namespace armarx::skills::segment event.status = ExecutionStatus2String.at(update.status); aron::data::DictPtr aron_params = nullptr; - if (update.usedParameterization.params) aron_params = std::make_shared<aron::data::Dict>(update.usedParameterization.params); + if (update.usedParams) aron_params = std::make_shared<aron::data::Dict>(update.usedParams); aron::data::DictPtr aron_data = nullptr; if (update.data) aron_data = std::make_shared<aron::data::Dict>(update.data); diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp index 1f6e8c377662ed19e5abcd557e0f8095ae87d1b8..dce0a7f051c96ead6968faef643ed261735abb9d 100644 --- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp +++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp @@ -40,7 +40,7 @@ namespace armarx::skills::segment skills::manager::dto::SkillExecutionInfo info; info.providerName = request.providerName; info.skillName = request.skillName; - info.parameterization.params = params->toAronDictPtr(); + info.params = params->toAronDictPtr(); return info; } @@ -59,7 +59,7 @@ namespace armarx::skills::segment auto aron = request.toAron(); aron::data::DictPtr aron_params = nullptr; - if (info.parameterization.params) aron_params = std::make_shared<aron::data::Dict>(info.parameterization.params); + if (info.params) aron_params = std::make_shared<aron::data::Dict>(info.params); aron->addElement("params", aron_params); // todo add as any type diff --git a/source/RobotAPI/libraries/skills/CMakeLists.txt b/source/RobotAPI/libraries/skills/CMakeLists.txt index 21406094ee27a92de936a9d2844eef0100f46020..416121d847e6cf9dab5cbb280fa0d764fbf263c0 100644 --- a/source/RobotAPI/libraries/skills/CMakeLists.txt +++ b/source/RobotAPI/libraries/skills/CMakeLists.txt @@ -17,7 +17,6 @@ armarx_add_library( ./provider/Skill.cpp ./provider/SpecializedSkill.cpp ./provider/SkillDescription.cpp - ./provider/SkillParameterization.cpp ./provider/SkillStatusUpdate.cpp ./provider/helper/LambdaSkillImplementation.cpp ./provider/detail/SkillImplementationWrapper.cpp @@ -27,7 +26,6 @@ armarx_add_library( ./provider/Skill.h ./provider/SpecializedSkill.h ./provider/SkillDescription.h - ./provider/SkillParameterization.h ./provider/SkillStatusUpdate.h ./provider/helper/LambdaSkillImplementation.h ./provider/detail/SkillImplementationWrapper.h diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp index 038ed5999e34f691c2c2c6d1b12400471726deb1..514f11ad7712776cc01ac33c71f3122510d78c01 100644 --- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp @@ -56,7 +56,7 @@ namespace armarx skills::provider::dto::SkillExecutionInfo exInfo; exInfo.skillName = info.skillName; exInfo.callbackInterface = myPrx; - exInfo.parameterization = info.parameterization; + exInfo.params = info.params; it->second->executeSkill(exInfo); } else diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp index 321273b10e2228efe206fd0424a40d0215a0fbfb..30bbcc86a9764465dedaa63b314aa3da4ae8c451 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp @@ -120,9 +120,9 @@ namespace armarx impl.statusInfo.statusUpdate.usedCallbackInterface = info.callbackInterface; impl.statusInfo.statusUpdate.skillName = info.skillName; impl.statusInfo.statusUpdate.providerName = getName(); - if (info.parameterization.params) + if (info.params) { - impl.statusInfo.statusUpdate.usedParameterization.params = std::make_shared<aron::data::Dict>(info.parameterization.params); + impl.statusInfo.statusUpdate.usedParameterization = std::make_shared<aron::data::Dict>(info.params); } // make sure thread is started @@ -160,10 +160,10 @@ namespace armarx impl.stoppedCheck.join(); } - if (statusUpdate.status != skills::provider::dto::ExecutionStatus::Succeeded && - statusUpdate.status != skills::provider::dto::ExecutionStatus::Failed) + if (statusUpdate.status != skills::provider::dto::Execution::Status::Succeeded && + statusUpdate.status != skills::provider::dto::Execution::Status::Failed) { - impl.statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Aborted; + impl.statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Aborted; } return statusUpdate.toIce(); diff --git a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp index c55eaf973e7d7e8c833e11f23351894c45c630d2..f19d037dc3c24993f2a87d651121e2855128041e 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp +++ b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp @@ -15,7 +15,7 @@ namespace armarx } ret.status = status; ret.usedCallbackInterface = usedCallbackInterface; - ret.usedParameterization = usedParameterization.toIce(); + ret.usedParams = usedParameterization->toAronDictPtr(); return ret; } } diff --git a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h index 439adf1150fe472b83af8aba81e33039be57d3b1..5385c6f0da4d2d1cc86ac664607903652c8a57b2 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h +++ b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h @@ -3,8 +3,7 @@ #include <string> #include <vector> -#include "SkillParameterization.h" - +#include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> #include <RobotAPI/interface/skills/SkillProviderInterface.h> namespace armarx @@ -15,9 +14,9 @@ namespace armarx { std::string providerName; std::string skillName; - SkillParameterization usedParameterization; + aron::data::DictPtr usedParameterization; callback::dti::SkillProviderCallbackInterfacePrx usedCallbackInterface; - provider::dto::ExecutionStatus status; + provider::dto::Execution::Status status; aron::data::DictPtr data; provider::dto::SkillStatusUpdate toIce() const; diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp index 09ecd676ca321cdbbc705cef431646cc0b7a931f..4160489c075261afaf522f8c9b311ea349f7ebb6 100644 --- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp +++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp @@ -35,7 +35,7 @@ namespace armarx std::lock_guard l(statusInfo.skillStatusMutex); statusInfo.started = false; statusInfo.stopped = false; - statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Idle; + statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Idle; statusInfo.statusUpdate.data = nullptr; skillStarted = IceUtil::Time::now().toMilliSeconds(); skill->reset(); @@ -47,7 +47,7 @@ namespace armarx statusInfo.started = true; // get params and setup variables - auto& aron_params = statusInfo.statusUpdate.usedParameterization.params; + auto& aron_params = statusInfo.statusUpdate.usedParameterization; if (not(aron_params) && description.acceptedType) { throw armarx::LocalException("The Skill '" + description.skillName + "' requires a type but no params are NULL."); @@ -58,7 +58,7 @@ namespace armarx // set scheduled { std::lock_guard l(statusInfo.skillStatusMutex); - statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Scheduled; + statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Scheduled; // do callback updateStatusCallback(); @@ -68,7 +68,7 @@ namespace armarx // execute { std::lock_guard l(statusInfo.skillStatusMutex); - statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Running; + statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Running; updateStatusCallback(); } @@ -90,7 +90,7 @@ namespace armarx { std::lock_guard l(statusInfo.skillStatusMutex); - statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Succeeded; + statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Succeeded; updateStatusCallback(); } } @@ -99,7 +99,7 @@ namespace armarx ARMARX_WARNING_S << "Skill " << description.skillName << " died with exception:\n" << ex.what(); std::lock_guard l(statusInfo.skillStatusMutex); - statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Failed; + statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Failed; updateStatusCallback(); }