LRAUV  revA
BuoyancyServo.h
Go to the documentation of this file.
1 
12 #ifndef BUOYANCYSERVO_H_
13 #define BUOYANCYSERVO_H_
14 
15 #include "EZServoServo.h"
16 #include "io/LoadControl.h"
17 #include "io/UartStream.h"
18 
20 
33 {
34 public:
35  BuoyancyServo( const Module* module );
36  virtual ~BuoyancyServo();
37 
38  virtual void run();
39 
42  virtual RunState start();
43 
45  virtual RunState starting();
46 
48  virtual RunState pause();
49 
51  virtual RunState paused();
52 
54  virtual RunState resume();
55 
57  virtual RunState resuming();
58 
60  virtual RunState runnable();
61 
63  virtual RunState resetting()
64  {
65  return stop();
66  }
67 
69  virtual RunState stop();
70 
71  virtual RunState stopping();
72 
74  virtual RunState stopped();
75 
76  // Shuts down motor controllers
77  void uninitialize( void );
78 
80  virtual ConfigURI getConfigURI( ConfigOption configOption ) const;
81 
82 private:
83 
84  // Note that the copy constructor below is private and not given a body.
85  // Any attempt to call it will return a compiler error.
86  BuoyancyServo( const BuoyancyServo& old ); // disallow copy constructor
87 
88  // Instance of load controller
90 
92 
93  // The outputs themselves
95 
96  // The inputs
98 
99  // returns true if data is requested from one of the readers
100  bool isDataRequested();
101 
102  // returns true if a new position has been commanded
103  bool isNeeded();
104 
105  typedef enum
106  {
107  INITIALIZE, // Program basic initialization into EEPROM
108  WAIT, // Wait for EEPROM write to finish
109  HOME, // Do any centering/homing, etc if needed
110  EXECUTE, // Execute any stored programs
111  VERIFY, // Confirm operable and no errors
112  DONE, // Ready to run
113  } StartupSequence;
114 
116 
117  // indicates whether things are ok to run
118  bool ok_;
119 
121 
122  // Timeouts for checking buoyancy position when we're "OFF"
124 
125  // Debugging outputs
126  bool debug_;
127 
129 
130  // Indicates speed has been initialized to fast
132 
133 
134  //------------------- vehicle parameters --------------------------*/
135  // Buoyancy Engine
142  //-----------------------------------------------------------------*/
143 
144  ConfigReader* countsPerCCCfgReader_; // counts on the A/D per ml of fluid pumped
145  ConfigReader* deviationVolumeCfgReader_; // Number of ml deviation allowed between expected and actual
146  ConfigReader* checkingTimeoutCfgReader_; // If the buoyancy is idling, this is how often to check for actual position. If there's a leak. This is when we'll find it.
147  ConfigReader* offsetVolumeCfgReader_; // Offset of position of motor controller
148  ConfigReader* buoyancyPumpDepthCfgReader_; // How deep we can pump
149 
152 
153  // Read configuration
154  bool readConfig();
155 
156  // Are we above the depth at which we can pump?
157  bool abovePumpDepth();
158 
159  // the given motor controller is ready to receive commands
161 
162  // Initialization routines. Returns true if initialization completed without error
163  bool initBuoyancy( void );
164 
165 };
166 
167 #endif /*BUOYANCYSERVO_H_*/
UniversalDataReader * depthReader_
Universal Readers.
Definition: BuoyancyServo.h:151
StartupSequence startup_
Definition: BuoyancyServo.h:115
virtual RunState stop()
Initial state – can be later followed by START.
Definition: BuoyancyServo.cpp:566
Definition: BuoyancyServo.h:111
LoadControl loadControl_
Definition: BuoyancyServo.h:89
DataReader * buoyancyPosReader_
Definition: BuoyancyServo.h:97
float checkingTimeoutCfg_
Definition: BuoyancyServo.h:137
Contains the LoadControl class declaration.
float offsetVolumeCfg_
Definition: BuoyancyServo.h:140
float actualBuoyancyPos_
Definition: BuoyancyServo.h:120
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
virtual RunState paused()
Should eventually follow a PAUSE request: should set continueTime.
Definition: BuoyancyServo.cpp:344
ConfigReader * buoyancyPumpDepthCfgReader_
Definition: BuoyancyServo.h:148
virtual RunState runnable()
Should eventually follow a START request or RESETTING.
Definition: BuoyancyServo.cpp:389
float buoyancyPumpDepth_
Definition: BuoyancyServo.h:141
virtual RunState start()
Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence.
Definition: BuoyancyServo.cpp:227
bool debug_
Definition: BuoyancyServo.h:126
virtual RunState resuming()
Might follow a PAUSE...RESUME sequence.
Definition: BuoyancyServo.cpp:382
virtual RunState stopping()
Might follow a STOP request.
Definition: BuoyancyServo.cpp:582
bool initBuoyancy(void)
Definition: BuoyancyServo.cpp:172
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: DataReader.h:30
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: UniversalDataWriter.h:24
ConfigReader * buoyancyDefaultCfgReader_
Definition: BuoyancyServo.h:91
bool abovePumpDepth()
Definition: BuoyancyServo.cpp:119
RunState
Definition: Component.h:115
Contains the UartStream class declaration.
Contains the EZServoServo class declaration.
Timespan class, represents a delta of time.
Definition: Timestamp.h:248
float lastActPos_
Definition: BuoyancyServo.h:120
Definition: BuoyancyServo.h:107
virtual RunState resume()
Resume from PAUSE.
Definition: BuoyancyServo.cpp:361
bool valveOpen_
Definition: BuoyancyServo.h:128
virtual RunState starting()
Might follow a STOP...START sequence.
Definition: BuoyancyServo.cpp:259
Definition: ElementURI.h:166
ConfigReader * deviationVolumeCfgReader_
Definition: BuoyancyServo.h:145
This is the device driver for the EZServo that controls the vehicle's buoyancy engine.
Definition: BuoyancyServo.h:32
bool readConfig()
Definition: BuoyancyServo.cpp:99
virtual RunState pause()
Pause for a short period (indicated by pauseTime)
Definition: BuoyancyServo.cpp:328
Definition: BuoyancyServo.h:109
Definition: BuoyancyServo.h:110
ConfigReader * offsetVolumeCfgReader_
Definition: BuoyancyServo.h:147
bool buoyancyRdy_
Definition: BuoyancyServo.h:160
float deviationVolumeCfg_
Definition: BuoyancyServo.h:136
Module is the abstract base class for a collection of Component objects that can be contained in a lo...
Definition: Module.h:45
float countsPerCCCfg_
Definition: BuoyancyServo.h:138
UniversalDataWriter * buoyancyPosWriter_
Definition: BuoyancyServo.h:94
virtual void run()
The actual "payload" of the component.
Definition: BuoyancyServo.cpp:131
float buoyancyDefaultCfg_
Definition: BuoyancyServo.h:139
This class allows one to control loads on a load controller channel.
Definition: LoadControl.h:24
Timespan checkingTimeout_
Definition: BuoyancyServo.h:123
bool isDataRequested()
Definition: BuoyancyServo.cpp:630
virtual ConfigURI getConfigURI(ConfigOption configOption) const
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Definition: BuoyancyServo.cpp:157
Definition: ConfigReader.h:13
float lastCmdPos_
Definition: BuoyancyServo.h:120
Definition: BuoyancyServo.h:112
bool ok_
Definition: BuoyancyServo.h:118
BuoyancyServo(const Module *module)
Definition: BuoyancyServo.cpp:23
virtual ~BuoyancyServo()
Definition: BuoyancyServo.cpp:95
ConfigReader * countsPerCCCfgReader_
Definition: BuoyancyServo.h:144
bool isNeeded()
Definition: BuoyancyServo.cpp:636
virtual RunState stopped()
Initial state – can be later followed by START.
Definition: BuoyancyServo.cpp:607
This is the parent class for device drivers that interface with EZServos Since all EZServos shares th...
Definition: EZServoServo.h:23
StartupSequence
Definition: BuoyancyServo.h:105
void uninitialize(void)
Provide a space for uninitialization.
Definition: BuoyancyServo.cpp:136
Definition: BuoyancyServo.h:108
ConfigOption
Definition: Component.h:456
ConfigReader * checkingTimeoutCfgReader_
Definition: BuoyancyServo.h:146
float cmdBuoyancyPos_
Definition: BuoyancyServo.h:120
bool fastPumpInit_
Definition: BuoyancyServo.h:131
virtual RunState resetting()
Might occur in case of Error.
Definition: BuoyancyServo.h:63