auv_control
Base.hpp
Go to the documentation of this file.
1 /* Generated from orogen/lib/orogen/templates/tasks/Task.hpp */
2 
3 #ifndef AUV_CONTROL_BASE_TASK_HPP
4 #define AUV_CONTROL_BASE_TASK_HPP
5 
6 #include "auv_control/BaseBase.hpp"
7 #include <string.h>
8 
9 namespace auv_control {
10 
12  base::LinearAngular6DCommand command;
13  RTT::FlowStatus status;
15  command = base::LinearAngular6DCommand();
16  status = RTT::NoData;
17  }
18  };
19 
20  class Base : public BaseBase
21  {
22  friend class BaseBase;
23  protected:
24  typedef RTT::InputPort<base::LinearAngular6DCommand> InputPortType;
25  struct InputPortInfo{
26  std::string name;
27  base::Time timeout;
28  base::Time last_sample_time;
29  base::Time last_system_time;
30  InputPortType *input_port;
32  :input_port(0){}
33  };
34 
35  std::vector<InputPortInfo> input_ports;
36  std::vector<Base::InputPortInfo*> connected_input_ports;
37 
38  void registerInput(std::string const& name, base::Time timeout, InputPortType* input_port);
39  InputPortType* deregisterInput(std::string const& name);
40  base::Time newestCommandTime;
41 
49  bool verifyTimeout(const base::Time &newest_command);
50 
58  bool verifyMissingData(const auv_control::ExpectedInputs &expected, const base::LinearAngular6DCommand &command);
59 
66  bool checkConnectedPorts(std::vector<Base::InputPortInfo> &input_ports, std::vector<Base::InputPortInfo*> &connected_input_ports);
67 
74  States gatherInputCommand(LinearAngular6DCommandStatus &merged_command, std::vector<Base::InputPortInfo*> &connected_ports);
75 
81  virtual bool addCommandInput(::std::string const & name, ::base::Time const & timeout);
82 
88  virtual void keepPosition();
89 
100  virtual bool calcOutput(const LinearAngular6DCommandStatus &merged_command) = 0;
101 
102  public:
106  Base(std::string const& name = "auv_control::Base");
107 
112  Base(std::string const& name, RTT::ExecutionEngine* engine);
113 
116  ~Base();
117 
132  bool configureHook();
133 
139  bool startHook();
140 
155  void updateHook();
156 
163  void errorHook();
164 
168  void stopHook();
169 
174  void cleanupHook();
175 
183  States performOneLoop();
184  private:
185  States merge(auv_control::ExpectedInputs const& expected, base::LinearAngular6DCommand const& current, base::LinearAngular6DCommand &merged);
186 
187 
188  };
189 }
190 
191 #endif
base::Time last_system_time
Definition: Base.hpp:29
base::Time newestCommandTime
Definition: Base.hpp:40
std::vector< InputPortInfo > input_ports
Definition: Base.hpp:35
Definition: Base.hpp:25
Definition: 6dControl.hpp:12
std::string name
Definition: Base.hpp:26
base::Time last_sample_time
Definition: Base.hpp:28
RTT::InputPort< base::LinearAngular6DCommand > InputPortType
Definition: Base.hpp:24
base::LinearAngular6DCommand command
Definition: Base.hpp:12
InputPortInfo()
Definition: Base.hpp:31
Definition: Base.hpp:20
std::vector< Base::InputPortInfo * > connected_input_ports
Definition: Base.hpp:36
LinearAngular6DCommandStatus()
Definition: Base.hpp:14
RTT::FlowStatus status
Definition: Base.hpp:13
base::Time timeout
Definition: Base.hpp:27
Definition: 6dControl.hpp:13
InputPortType * input_port
Definition: Base.hpp:30