EEROS  1.0.0.0
API for the EEROS Real-Time Robotics Framework
ConditionTimeout.hpp
Go to the documentation of this file.
1 #ifndef ORG_EEROS_SEQUENCER_CONDITIONTIMEOUT_HPP_
2 #define ORG_EEROS_SEQUENCER_CONDITIONTIMEOUT_HPP_
3 
5 #include <chrono>
6 
7 namespace eeros {
8  namespace sequencer {
9 
10  class ConditionTimeout : public Condition {
11  public:
12  ConditionTimeout() : timeout(0) { }
13 
14  bool validate() {
15  if (timeout == 0) return false; // timeout not activated
16  if (started == false) { // first call
17  resetTimeout();
18  return false;
19  }
20  auto now = std::chrono::steady_clock::now();
21  auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(now - startTime);
22  return (duration.count() > timeout * 1000);
23  };
24 
25  void setTimeoutTime(double timeInSec) {timeout = timeInSec;} // 0 = not set or infinite
26  void resetTimeout() {
27  started = true;
28  startTime = std::chrono::steady_clock::now();
29  }
30  private:
31  bool started = false;
32  std::chrono::steady_clock::time_point startTime;
33  double timeout; // 0 = not set or infinite, in seconds
34  };
35 
36  }; //namespace sequencer
37 }; // namespace eeros
38 
39 #endif // ORG_EEROS_SEQUENCER_CONDITIONTIMEOUT_HPP_
void setTimeoutTime(double timeInSec)
Definition: ConditionTimeout.hpp:25
Definition: Condition.hpp:7
Definition: Config.hpp:14
Definition: ConditionTimeout.hpp:10
void resetTimeout()
Definition: ConditionTimeout.hpp:26
bool validate()
Definition: ConditionTimeout.hpp:14
ConditionTimeout()
Definition: ConditionTimeout.hpp:12