SimplePeriodicSkill.cpp
Go to the documentation of this file.
1 #include "SimplePeriodicSkill.h"
2 
4 
6 
7 namespace armarx::skills
8 {
10  const armarx::Frequency& frequency) :
11  SimpleSkill(skillDescription), frequency(frequency)
12  {
13  }
14 
17  {
19 
20  while (true)
21  {
23 
24  const auto res = step(in);
25  switch (res.status)
26  {
28  // nothing to do here. break switch
29  break;
31  return MakeAbortedResult();
33  return MakeSucceededResult(res.data);
35  return MakeFailedResult();
36  }
37 
38  const auto sleepDuration = metronome.waitForNextTick();
39  if (not sleepDuration.isPositive())
40  {
41  ARMARX_INFO << deactivateSpam() << __PRETTY_FUNCTION__
42  << ": execution took too long (" << -sleepDuration
43  << " too long. Expected " << frequency.toCycleDuration() << ")";
44  }
45  }
46 
47  // never happens
48  throw skills::error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
49  }
50 
53  {
54  ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId
55  << "'. Please overwrite this method!";
57  }
58 } // namespace armarx::skills
Exception.h
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:190
armarx::skills::ActiveOrTerminatedSkillStatus::Succeeded
@ Succeeded
armarx::skills::ActiveOrTerminatedSkillStatus::Failed
@ Failed
armarx::skills
This file is part of ArmarX.
Definition: PeriodicUpdateWidget.cpp:11
armarx::skills::SkillDescription
Definition: SkillDescription.h:17
armarx::skills::SimpleSkill::MainInput
Definition: SimpleSkill.h:22
armarx::core::time::Frequency
Represents a frequency.
Definition: Frequency.h:16
armarx::skills::SimplePeriodicSkill::frequency
const armarx::Frequency frequency
Definition: SimplePeriodicSkill.h:30
armarx::skills::Skill::MakeFailedResult
static MainResult MakeFailedResult()
Definition: Skill.cpp:338
armarx::core::time::Frequency::toCycleDuration
Duration toCycleDuration() const
Definition: Frequency.cpp:60
armarx::skills::Skill::description
SkillDescription description
Definition: Skill.h:300
armarx::skills::SimplePeriodicSkill::SimplePeriodicSkill
SimplePeriodicSkill(const SkillDescription &skillDescription, const armarx::Frequency &frequency)
Definition: SimplePeriodicSkill.cpp:9
armarx::skills::SkillDescription::skillId
SkillID skillId
Definition: SkillDescription.h:19
armarx::skills::ActiveOrTerminatedSkillStatus::Aborted
@ Aborted
Metronome.h
armarx::skills::error::SkillException
A base class for skill exceptions.
Definition: Exception.h:34
armarx::skills::Skill::MakeAbortedResult
static MainResult MakeAbortedResult()
Definition: Skill.cpp:347
armarx::skills::Skill::MakeSucceededResult
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
Definition: Skill.cpp:329
armarx::skills::Skill::MainResult
A result struct for th main method of a skill.
Definition: Skill.h:39
armarx::skills::SimpleSkill
Definition: SimpleSkill.h:9
armarx::skills::ActiveOrTerminatedSkillStatus::Running
@ Running
armarx::core::time::Metronome::waitForNextTick
Duration waitForNextTick()
Wait and block until the target period is met.
Definition: Metronome.cpp:27
armarx::skills::SimpleSkill::main
MainResult main() final
Override this method with the actual implementation. The callback is for status updates to the callin...
Definition: SimpleSkill.cpp:15
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
armarx::core::time::Metronome
Simple rate limiter for use in loops to maintain a certain frequency given a clock.
Definition: Metronome.h:34
armarx::Logging::deactivateSpam
SpamFilterDataPtr deactivateSpam(float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const
disables the logging for the current line for the given amount of seconds.
Definition: Logging.cpp:99
armarx::skills::Skill::throwIfSkillShouldTerminate
void throwIfSkillShouldTerminate(const std::string &abortedMessage="")
Definition: Skill.cpp:305
armarx::skills::SimplePeriodicSkill::step
virtual StepResult step(const MainInput &in)
Override this method with your own step function.
Definition: SimplePeriodicSkill.cpp:52
SimplePeriodicSkill.h
armarx::skills::PeriodicSkill::StepResult
Definition: PeriodicSkill.h:36