diff --git a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt index 56bfd4d8af2866f732345b2e65f8ab6ce6463fff..fe8af64e0f5234e7486ba220589e8fcc880d2edb 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt +++ b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt @@ -19,6 +19,7 @@ set(SOURCES Callback.cpp Timeout.cpp Segfault.cpp + RandomExitStatus.cpp ) set(HEADERS @@ -29,6 +30,7 @@ set(HEADERS Callback.h Timeout.h Segfault.h + RandomExitStatus.h ) armarx_add_component("${SOURCES}" "${HEADERS}") diff --git a/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.cpp b/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cf265936b583e1cedaef9dc233ac4ccf9a2c2e65 --- /dev/null +++ b/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.cpp @@ -0,0 +1,29 @@ + +#include "RandomExitStatus.h" +#include <ArmarXCore/core/logging/Logging.h> + +namespace armarx::skills::provider +{ + RandomExitStatus::RandomExitStatus() : SimpleSkill(GetSkillDescription()) + { + } + + SkillDescription + RandomExitStatus::GetSkillDescription() + { + return SkillDescription{ + .skillId = skills::SkillID{.skillName = "RandomExitStatus"}, + .description = "This skill exits with a random status. It either succeeds or fails with a 50/50 chance.", + .timeout = armarx::core::time::Duration::MilliSeconds(100)}; + } + + Skill::MainResult + RandomExitStatus::main(const MainInput& in) + { + if ((rand() % 2) != 0) + { + return {TerminatedSkillStatus::Succeeded, nullptr}; + } + return {TerminatedSkillStatus::Failed, nullptr}; + } +} // namespace armarx::skills::provider diff --git a/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.h b/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.h new file mode 100644 index 0000000000000000000000000000000000000000..91b008021379dda526674aa534ba910828118846 --- /dev/null +++ b/source/RobotAPI/components/skills/SkillProviderExample/RandomExitStatus.h @@ -0,0 +1,19 @@ +#pragma once + + +// RobotAPI +#include <RobotAPI/libraries/skills/provider/SimpleSkill.h> + +namespace armarx::skills::provider +{ + class RandomExitStatus : public SimpleSkill + { + public: + RandomExitStatus(); + + static SkillDescription GetSkillDescription(); + + private: + Skill::MainResult main(const MainInput&) final; + }; +} // namespace armarx::skills::provider diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp index d292d7465bd8df09806fbe77b235478425f3442b..6eb6479239c09ee1d79f27e24c3370dd935c3be6 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp @@ -61,6 +61,10 @@ namespace armarx::skills::provider // segfault ARMARX_INFO << "Adding skill SegfaultSkill"; addSkillFactory<SegfaultSkill>(); + + // random exit status + ARMARX_INFO << "Adding skill RandomExitStatus"; + addSkillFactory<RandomExitStatus>(); } void diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h index be0c6b3704daafcbec412fd0b9dfd9690485e8f1..3bcce3e2ca728794223e755e9aa7accce01b799f 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h +++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h @@ -35,6 +35,7 @@ #include "Incomplete.h" #include "Segfault.h" #include "Timeout.h" +#include "RandomExitStatus.h" namespace armarx::skills::provider {