EEROS  1.0.0.0
API for the EEROS Real-Time Robotics Framework
Sequence.hpp
Go to the documentation of this file.
1 #ifndef ORG_EEROS_SEQUENCER_SEQUENCE_HPP_
2 #define ORG_EEROS_SEQUENCER_SEQUENCE_HPP_
3 
5 #include <condition_variable>
6 #include <thread>
7 
8 namespace eeros {
9  namespace sequencer {
10 
11  class Sequencer;
12 
13  class Sequence : public BaseSequence {
14  friend class Sequencer;
15  public:
16  Sequence(std::string name, Sequencer& seq); // only for mainSequence
17  Sequence(std::string name, Sequencer& seq, BaseSequence* caller, bool blocking);
18  virtual ~Sequence();
19 
20  virtual int operator() () {return start();} // this operator can be overloaded in the derived sequence
21  virtual int action() = 0; // this function has to be implemented in the derived sequence
22  int start();
27  void wait();
32  void waitAndTerminate();
33 
34  private:
35  bool running = true, go = false, done = true;
36  std::thread* t;
37  void run();
38  };
39  }; //namespace sequencer
40 }; // namespace eeros
41 
42 #endif // ORG_EEROS_SEQUENCER_SEQUENCE_HPP_
Definition: Sequence.hpp:13
Sequence(std::string name, Sequencer &seq)
Definition: Sequence.cpp:10
Sequencer & seq
Definition: BaseSequence.hpp:68
Definition: Config.hpp:14
virtual int operator()()
Definition: Sequence.hpp:20
BaseSequence * caller
Definition: BaseSequence.hpp:69
void waitAndTerminate()
Definition: Sequence.cpp:73
bool blocking
Definition: BaseSequence.hpp:70
Definition: Sequencer.hpp:15
std::string name
Definition: BaseSequence.hpp:67
volatile bool running
Definition: Executor.cpp:25
void wait()
Definition: Sequence.cpp:67
Definition: BaseSequence.hpp:27
int start()
Definition: Sequence.cpp:52
virtual ~Sequence()
Definition: Sequence.cpp:29