diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d5f8e6cbd628fc6f5f5022ad11f6908e6601368f --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp @@ -0,0 +1,21 @@ +#include "SimplePeriodicSkill.h" + +namespace armarx::skills +{ + + PeriodicSkill::StepResult SimplePeriodicSkill::step() + { + StepInput i; + i.executorName = this->executorName; + i.parameters = this->parameters; + i.callback = this->callback; + return this->step(i); + } + + PeriodicSkill::StepResult SimplePeriodicSkill::step(const StepInput& in) + { + ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId + << "'. Please overwrite this method!"; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; + } +} diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h new file mode 100644 index 0000000000000000000000000000000000000000..69a7ccc1868a53410886f32003849163a587c301 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h @@ -0,0 +1,30 @@ +#pragma once + +#include <RobotAPI/libraries/skills/provider/PeriodicSkill.h> + +namespace armarx +{ + namespace skills + { + class SimplePeriodicSkill : public PeriodicSkill + { + public: + using Base = PeriodicSkill; + + struct StepInput + { + std::string executorName; + aron::data::DictPtr parameters; + CallbackT callback; + }; + + using Base::Base; + + protected: + StepResult step() final; + + virtual StepResult step(const StepInput& in); + + }; + } // namespace skills +} // namespace armarx diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a04c2b3d821e7e821dd2158a98a636d9b3338b03 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp @@ -0,0 +1,6 @@ +#include "SimplePeriodicSpecializedSkill.h" + +namespace armarx::skills +{ + +} diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h new file mode 100644 index 0000000000000000000000000000000000000000..221fdc2c779ea491cca88cff7e52b95f114d549a --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h @@ -0,0 +1,51 @@ +#pragma once + +#include <RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h> + +namespace armarx +{ + namespace skills + { + template <class AronT> + class SimplePeriodicSpecializedSkill : public PeriodicSpecializedSkill<AronT> + { + + public: + using Base = PeriodicSpecializedSkill<AronT>; + using Skill::description; + using Skill::getSkillId; + + using StepResult = PeriodicSkill::StepResult; + + using Base::Base; + + struct SpecializedStepInput + { + std::string executorName; + AronT parameters; + Skill::CallbackT callback; + }; + + protected: + StepResult step() final + { + AronT p; + p.fromAron(this->parameters); + + SpecializedStepInput i; + i.executorName = this->executorName; + i.parameters = p; + i.callback = this->callback; + return this->step(i); + } + + virtual StepResult step(const SpecializedStepInput& in) + { + ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId + << "'. Please overwrite this method!"; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; + } + + }; + } // namespace skills +} // namespace armarx