LRAUV  revA
CTD_NeilBrown.h
Go to the documentation of this file.
1 
12 #ifndef CTD_NEILBROWN_H_
13 #define CTD_NEILBROWN_H_
14 
15 #include <vector> // std::vector
16 
18 #include "io/LoadControl.h"
19 #include "io/UartStream.h"
20 #include "logger/Logger.h"
21 
24 
38 {
39 public:
40  CTD_NeilBrown( const Module* module );
41  virtual ~CTD_NeilBrown();
42 
43  virtual void run();
44 
47  virtual RunState start();
48 
50  virtual RunState starting();
51 
53  virtual RunState pause();
54 
56  virtual RunState paused();
57 
59  virtual RunState resume();
60 
62  virtual RunState resuming();
63 
65  virtual RunState runnable();
66 
68  virtual RunState resetting()
69  {
70  return stop();
71  }
72 
74  virtual RunState stop();
75 
76  virtual RunState stopping();
77 
79  virtual RunState stopped();
80 
81  void uninitialize();
82 
84  virtual ConfigURI getConfigURI( ConfigOption configOption ) const;
85 
86 private:
87 
88  // Note that the copy constructor below is private and not given a body.
89  // Any attempt to call it will return a compiler error.
90  CTD_NeilBrown( const CTD_NeilBrown& old ); // disallow copy constructor
91 
92  void readConfig();
93 
94  bool parseResponse( char *data );
95 
96  unsigned int bufferOffset_;
97 
99 
101 
108 
118 
124 
125 
126  // returns true if data is requested from one of the readers
127  bool isDataRequested();
128 
129  // Debugging outputs
130  bool debug_;
131 
132  // Instance of load controller
134 
135  // the pressure reading is out of bounds. We only want to report the error once
137 
142 
143  // Stores the current response from the device
144  char deviceResponse_[512];
145 
146  // Holds the communications device
148 
149  float latitude_;
157 
158  // container for history to use in temporal binning
160  std::vector<float> temporal_bin_conductivity_;
161  std::vector<float> temporal_bin_temperature_;
162  std::vector<float> temporal_bin_salinity_;
164 
165  // If true, ignore next line
167 
168  void go(); // What we do if we are halted.
169 
170  bool receive(); // Try receiving the data from the UART
171  bool getSimulatedData(); // Try reading data from the SimSlate
172  void preprocessData(); // Perform onboard processing and quality checks
173  void writeData(); // write data out to the slate
174  void update_temporal_bin(); // update the onboard binning
175  void calculate_and_report_temporal_bin_statistics(); // calculate statistics when bin is full
176 
177  // Calculates a NMEA checksum
178  static int CalcChecksum( const char* response );
179 
180 };
181 
182 #endif /* CTD_NEILBROWN_H_ */
DataWriter * binMeanSalinityWriter_
Definition: CTD_NeilBrown.h:116
DataWriter * binStandardDeviationTemperatureWriter_
Definition: CTD_NeilBrown.h:114
char deviceResponse_[512]
Definition: CTD_NeilBrown.h:144
UniversalDataWriter * depthWriter_
Definition: CTD_NeilBrown.h:103
Timespan pausePeriod_
Definition: CTD_NeilBrown.h:140
float pressureOffset_
Definition: CTD_NeilBrown.h:152
Contains the LoadControl class declaration.
bool isDataRequested()
Definition: CTD_NeilBrown.cpp:490
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
DataWriter * binMedianSalinityWriter_
Definition: CTD_NeilBrown.h:115
virtual RunState starting()
Might follow a STOP...START sequence.
Definition: CTD_NeilBrown.cpp:263
float temperature_
Definition: CTD_NeilBrown.h:150
void go()
Definition: CTD_NeilBrown.cpp:501
DataReader * gfScanActiveReader_
Definition: CTD_NeilBrown.h:100
UniversalDataWriter * salinityWriter_
Definition: CTD_NeilBrown.h:105
float maxSalinityBound_
Definition: CTD_NeilBrown.h:155
bool badSalinity_
Definition: CTD_NeilBrown.h:151
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: DataReader.h:30
void update_temporal_bin()
Definition: CTD_NeilBrown.cpp:643
float depth_
Definition: CTD_NeilBrown.h:150
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: UniversalDataWriter.h:24
virtual ConfigURI getConfigURI(ConfigOption configOption) const
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Definition: CTD_NeilBrown.cpp:713
float maxPressBound_
Definition: CTD_NeilBrown.h:153
virtual RunState paused()
Should eventually follow a PAUSE request: should set continueTime.
Definition: CTD_NeilBrown.cpp:300
RunState
Definition: Component.h:115
virtual RunState start()
Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence.
Definition: CTD_NeilBrown.cpp:226
UniversalDataWriter * pressureWriter_
Definition: CTD_NeilBrown.h:104
Contains the UartStream class declaration.
DataWriter * binMeanTemperatureWriter_
Definition: CTD_NeilBrown.h:113
float density_
Definition: CTD_NeilBrown.h:150
Timespan class, represents a delta of time.
Definition: Timestamp.h:248
bool badTemperature_
Definition: CTD_NeilBrown.h:151
virtual RunState resume()
Resume from PAUSE.
Definition: CTD_NeilBrown.cpp:312
bool receive()
Definition: CTD_NeilBrown.cpp:510
std::vector< float > temporal_bin_temperature_
Definition: CTD_NeilBrown.h:161
float latitude_
Definition: CTD_NeilBrown.h:149
bool parseResponse(char *data)
Definition: CTD_NeilBrown.cpp:122
virtual ~CTD_NeilBrown()
Definition: CTD_NeilBrown.cpp:110
Implements both InStream and OutStream for the LPC3XXX Standard UART.
Definition: UartStream.h:26
virtual RunState resetting()
Might occur in case of Error.
Definition: CTD_NeilBrown.h:68
DataWriter * binMedianTemperatureWriter_
Definition: CTD_NeilBrown.h:112
DataWriter * binStandardDeviationConductivityWriter_
Definition: CTD_NeilBrown.h:111
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
DataWriter * binMeanConductivityWriter_
Definition: CTD_NeilBrown.h:110
UniversalDataReader * latitudeReader_
Definition: CTD_NeilBrown.h:98
virtual RunState stop()
Initial state – can be later followed by START.
Definition: CTD_NeilBrown.cpp:416
bool badConductivity_
Definition: CTD_NeilBrown.h:151
Definition: ElementURI.h:166
UniversalDataWriter * densityWriter_
Definition: CTD_NeilBrown.h:102
size_t temporal_bin_count_
Definition: CTD_NeilBrown.h:159
float minPressBound_
Definition: CTD_NeilBrown.h:154
bool debug_
Definition: CTD_NeilBrown.h:130
virtual RunState runnable()
Should eventually follow a START request or RESETTING.
Definition: CTD_NeilBrown.cpp:349
UartStream uart_
Definition: CTD_NeilBrown.h:147
void uninitialize()
Provide a space for uninitialization.
Definition: CTD_NeilBrown.cpp:208
virtual RunState stopped()
Initial state – can be later followed by START.
Definition: CTD_NeilBrown.cpp:453
static int CalcChecksum(const char *response)
Definition: CTD_NeilBrown.cpp:190
Timestamp binTime_
Definition: CTD_NeilBrown.h:163
bool pressBoundingError_
Definition: CTD_NeilBrown.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
ConfigReader * minSalinityBoundCfgReader_
Definition: CTD_NeilBrown.h:123
void writeData()
Definition: CTD_NeilBrown.cpp:626
UniversalDataWriter * conductivityWriter_
Definition: CTD_NeilBrown.h:107
virtual RunState resuming()
Might follow a PAUSE...RESUME sequence.
Definition: CTD_NeilBrown.cpp:337
float pressureDB_
Definition: CTD_NeilBrown.h:150
virtual void run()
The actual "payload" of the component.
Definition: CTD_NeilBrown.cpp:118
This class allows one to control loads on a load controller channel.
Definition: LoadControl.h:24
LoadControl loadControl_
Definition: CTD_NeilBrown.h:133
Timespan ctdTimeout_
Definition: CTD_NeilBrown.h:138
bool nextLineQuestionable_
Definition: CTD_NeilBrown.h:166
ConfigReader * maxPressBoundCfgReader_
Definition: CTD_NeilBrown.h:119
Software interface to Neil Brown CTD.
Definition: CTD_NeilBrown.h:37
Definition: ConfigReader.h:13
std::vector< float > temporal_bin_salinity_
Definition: CTD_NeilBrown.h:162
Abstract Base class for software components that run independently from the computation cycle...
Definition: AsyncComponent.h:20
Contains the Logger class definition.
UniversalDataWriter * temperatureWriter_
Definition: CTD_NeilBrown.h:106
ConfigReader * offsetCfgReader_
Definition: CTD_NeilBrown.h:121
virtual RunState stopping()
Might follow a STOP request.
Definition: CTD_NeilBrown.cpp:435
bool badPressure_
Definition: CTD_NeilBrown.h:151
unsigned int bufferOffset_
Definition: CTD_NeilBrown.h:96
float salinity_
Definition: CTD_NeilBrown.h:150
bool getSimulatedData()
Definition: CTD_NeilBrown.cpp:564
DataWriter * binMedianConductivityWriter_
Definition: CTD_NeilBrown.h:109
float conductivity_
Definition: CTD_NeilBrown.h:150
float minSalinityBound_
Definition: CTD_NeilBrown.h:156
ConfigOption
Definition: Component.h:456
std::vector< float > temporal_bin_conductivity_
Definition: CTD_NeilBrown.h:160
CTD_NeilBrown(const Module *module)
Definition: CTD_NeilBrown.cpp:37
Timespan uartTimeout_
Definition: CTD_NeilBrown.h:139
ConfigReader * minPressBoundCfgReader_
Definition: CTD_NeilBrown.h:120
virtual RunState pause()
Pause for a short period (indicated by pauseTime)
Definition: CTD_NeilBrown.cpp:274
Represents absolute times.
Definition: Timestamp.h:31
void calculate_and_report_temporal_bin_statistics()
Definition: CTD_NeilBrown.cpp:665
ConfigReader * maxSalinityBoundCfgReader_
Definition: CTD_NeilBrown.h:122
void preprocessData()
Definition: CTD_NeilBrown.cpp:584
DataWriter * binStandardDeviationSalinityWriter_
Definition: CTD_NeilBrown.h:117
Timestamp startTime_
Definition: CTD_NeilBrown.h:141
void readConfig()
Definition: CTD_NeilBrown.cpp:480
Contains the AsyncComponent class definition.