EEROS  1.0.0.0
API for the EEROS Real-Time Robotics Framework
Input.hpp
Go to the documentation of this file.
1 #ifndef ORG_EEROS_CONTROL_INPUT_HPP_
2 #define ORG_EEROS_CONTROL_INPUT_HPP_
3 
8 
9 namespace eeros {
10  namespace control {
11 
12  template < typename T = double >
13  class Input {
14  public:
15  Input() : connectedOutput(nullptr), owner(nullptr) { }
16  Input(Block* owner) : connectedOutput(nullptr), owner(owner) { }
17 
18  virtual bool connect(Output<T>& output) {
19  if(connectedOutput != nullptr) return false;
20  connectedOutput = &output;
21  return true;
22  }
23 
24  virtual bool connect(Output<T>* output) {
25  if(connectedOutput != nullptr) return false;
26  connectedOutput = output;
27  return true;
28  }
29 
30  virtual void disconnect() {
31  connectedOutput = nullptr;
32  }
33 
34  virtual bool isConnected() const {
35  return connectedOutput != nullptr;
36  }
37 
38  virtual Signal<T>& getSignal() {
39  if(isConnected()) return connectedOutput->getSignal();
40  std::string name;
41  if (owner != nullptr) name = owner->getName(); else name = "";
42  throw NotConnectedFault("Read from an unconnected input in block '" + name + "'");
43  }
44 
45  virtual void setOwner(Block* block) {
46  owner = block;
47  }
48 
49  protected:
52  };
53 
54  };
55 };
56 
57 #endif /* ORG_EEROS_CONTROL_INPUT_HPP_ */
virtual bool connect(Output< T > *output)
Definition: Input.hpp:24
virtual bool isConnected() const
Definition: Input.hpp:34
Input()
Definition: Input.hpp:15
Definition: Config.hpp:14
Definition: Block.hpp:10
Definition: Output.hpp:11
virtual std::string getName()
Definition: Block.cpp:9
Block * owner
Definition: Input.hpp:51
Definition: NotConnectedFault.hpp:8
Output< T > * connectedOutput
Definition: Input.hpp:50
virtual Signal< T > & getSignal()
Definition: Input.hpp:38
virtual void setOwner(Block *block)
Definition: Input.hpp:45
Input(Block *owner)
Definition: Input.hpp:16
Definition: Signal.hpp:17
Definition: Input.hpp:13
virtual bool connect(Output< T > &output)
Definition: Input.hpp:18
virtual void disconnect()
Definition: Input.hpp:30