LRAUV  revA
CTD_NeilBrown Class Reference

Software interface to Neil Brown CTD. More...

#include <CTD_NeilBrown.h>

Inheritance diagram for CTD_NeilBrown:
Collaboration diagram for CTD_NeilBrown:

Public Member Functions

 CTD_NeilBrown (const Module *module)
 
virtual ~CTD_NeilBrown ()
 
virtual void run ()
 The actual "payload" of the component. More...
 
virtual RunState start ()
 Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence. More...
 
virtual RunState starting ()
 Might follow a STOP...START sequence. More...
 
virtual RunState pause ()
 Pause for a short period (indicated by pauseTime) More...
 
virtual RunState paused ()
 Should eventually follow a PAUSE request: should set continueTime. More...
 
virtual RunState resume ()
 Resume from PAUSE. More...
 
virtual RunState resuming ()
 Might follow a PAUSE...RESUME sequence. More...
 
virtual RunState runnable ()
 Should eventually follow a START request or RESETTING. More...
 
virtual RunState resetting ()
 Might occur in case of Error. More...
 
virtual RunState stop ()
 Initial state – can be later followed by START. More...
 
virtual RunState stopping ()
 Might follow a STOP request. More...
 
virtual RunState stopped ()
 Initial state – can be later followed by START. More...
 
void uninitialize ()
 Provide a space for uninitialization. More...
 
virtual ConfigURI getConfigURI (ConfigOption configOption) const
 Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc. More...
 
- Public Member Functions inherited from AsyncComponent
bool isIdlePriority ()
 
- Public Member Functions inherited from Component
virtual ~Component ()
 Destructor cleans up readers_ and writers_. More...
 
void registerReader (DataReader *reader)
 
void unregisterReader (DataReader *reader)
 
void registerWriter (DataWriter *writer)
 
void unregisterWriter (DataWriter *writer)
 
void disableMetering (void)
 
FlexArray< DataReader * > & getReaderList (void)
 
FlexArray< DataWriter * > & getWriterList (void)
 
const ModulegetModule ()
 
virtual void initialize ()
 Provide a space for initialization before being run. More...
 
virtual void configure ()
 Read (or re-read!) configuration settings. More...
 
virtual void execute (void)
 
bool isActive () const
 Indicates if the component is active. More...
 
const CodedStrgetName (void) const
 Returns the name. More...
 
const TimestampgetTimeOfLastRun (void) const
 
ComponentState getState (void)
 Return the component's current state. More...
 
void setState (ComponentState state)
 
RunState getRunState (void)
 Return the component's run state. More...
 
bool isUsingRunState ()
 Return true if using runState. More...
 
void requestData (bool requestingData)
 Tell the component to start (or stop) sending data. More...
 
void requestStart ()
 Tell the component to start runnning. More...
 
void requestPause (const Timespan expectedPauseTime)
 Tell the component to pause runnning. More...
 
void requestResume ()
 Tell the component resume from pause. More...
 
void requestStop ()
 Tell the component to stop runnning. More...
 
virtual RunState satisfied ()
 Possible return value of a Behavior. More...
 
virtual RunState pausing ()
 Might follow a PAUSE request. More...
 
void setCriticalFailureReported (bool boolVal)
 
void setRecoveringFromCritical (bool boolVal)
 
void setFailureReported (bool boolVal)
 
bool isFailureUninitialized ()
 
void setFailureUninitialized (bool boolVal)
 
void setRetryTimeout (const Timespan &timeout)
 
virtual bool isCompleted (void)
 Query if this component is completed. More...
 
void setPeriod (const Timespan &period)
 Set the period of this component... used if it is periodic. More...
 
const TimespangetPeriod (void)
 Returns the component's period (regardless of whether it is periodic) More...
 
ComponentType getComponentType ()
 Getter function for ComponentType. More...
 
virtual bool isFailed (void) const
 
virtual FailureMode::FailType getFailureType (void) const
 
virtual bool getCriticalFailureReported (void) const
 
virtual bool getFailureReported (void) const
 
virtual Timespan getRetryTimeout (void) const
 
virtual FailureMode::FailType setFailure (FailureMode::FailType failureType)
 
virtual int getFailCount (void) const
 
virtual bool isFailureMissionCritical ()
 
virtual int getAllowableFailures (void) const
 
virtual void setAllowableFailures (int fails)
 
LoggergetLogger (void)
 
virtual int incrementFailCount (void)
 
virtual void resetFailCount (void)
 
virtual int getSkippedRunsSinceFail (void) const
 
virtual int incrementSkippedRunsSinceFail (void)
 
virtual void logVoltage (float voltage, float averageVoltage)
 
virtual void logCurrent (float current, float averageCurrent)
 
const TimestampgetWriteTimestamp (void)
 
void setWriteTimestamp (const Timestamp &writeTimestamp)
 
BlobReadernewBlobReader (const BlobURI &blobURI)
 
BlobReadernewBlobReaderFromUniversal (const Str &componentName, const UniversalBlobURI &blobURI)
 
BlobWriternewBlobWriter (const BlobURI &blobURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
ConfigReadernewConfigReader (const ConfigURI &configURI)
 
DataReadernewDataReader (const DataURI &dataURI)
 
DataReadernewDataReaderFromUniversal (const Str &componentName, const UniversalURI &universalURI)
 
DataWriternewDataWriter (const DataURI &dataURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
UniversalBlobReadernewUniversalBlobReader (const UniversalBlobURI &universalURI)
 
UniversalBlobWriternewUniversalBlobWriter (const UniversalBlobURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 
UniversalDataReadernewUniversalReader (const UniversalURI &universalURI)
 
UniversalDataWriternewUniversalWriter (const UniversalURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS)
 

Private Member Functions

 CTD_NeilBrown (const CTD_NeilBrown &old)
 
void readConfig ()
 
bool parseResponse (char *data)
 
bool isDataRequested ()
 
void go ()
 
bool receive ()
 
bool getSimulatedData ()
 
void preprocessData ()
 
void writeData ()
 
void update_temporal_bin ()
 
void calculate_and_report_temporal_bin_statistics ()
 

Static Private Member Functions

static int CalcChecksum (const char *response)
 

Private Attributes

unsigned int bufferOffset_
 
UniversalDataReaderlatitudeReader_
 
DataReadergfScanActiveReader_
 
UniversalDataWriterdensityWriter_
 
UniversalDataWriterdepthWriter_
 
UniversalDataWriterpressureWriter_
 
UniversalDataWritersalinityWriter_
 
UniversalDataWritertemperatureWriter_
 
UniversalDataWriterconductivityWriter_
 
DataWriterbinMedianConductivityWriter_
 
DataWriterbinMeanConductivityWriter_
 
DataWriterbinStandardDeviationConductivityWriter_
 
DataWriterbinMedianTemperatureWriter_
 
DataWriterbinMeanTemperatureWriter_
 
DataWriterbinStandardDeviationTemperatureWriter_
 
DataWriterbinMedianSalinityWriter_
 
DataWriterbinMeanSalinityWriter_
 
DataWriterbinStandardDeviationSalinityWriter_
 
ConfigReadermaxPressBoundCfgReader_
 
ConfigReaderminPressBoundCfgReader_
 
ConfigReaderoffsetCfgReader_
 
ConfigReadermaxSalinityBoundCfgReader_
 
ConfigReaderminSalinityBoundCfgReader_
 
bool debug_
 
LoadControl loadControl_
 
bool pressBoundingError_
 
Timespan ctdTimeout_
 
Timespan uartTimeout_
 
Timespan pausePeriod_
 
Timestamp startTime_
 
char deviceResponse_ [512]
 
UartStream uart_
 
float latitude_
 
float conductivity_
 
float temperature_
 
float pressureDB_
 
float depth_
 
float salinity_
 
float density_
 
bool badConductivity_
 
bool badTemperature_
 
bool badPressure_
 
bool badSalinity_
 
float pressureOffset_
 
float maxPressBound_
 
float minPressBound_
 
float maxSalinityBound_
 
float minSalinityBound_
 
size_t temporal_bin_count_
 
std::vector< float > temporal_bin_conductivity_
 
std::vector< float > temporal_bin_temperature_
 
std::vector< float > temporal_bin_salinity_
 
Timestamp binTime_
 
bool nextLineQuestionable_
 

Additional Inherited Members

- Public Types inherited from Component
enum  ComponentState {
  BLOCK_CONTINUOUS, BLOCK_PERIODIC, BLOCK_NORMAL, BLOCK_COMPLETED,
  BLOCK_UNKNOWN
}
 In this model, the component has basically two states: wanting to run, and completed (no longer needing to run). More...
 
enum  ComponentType { COMPONENT_ASYNC, COMPONENT_CONFIG, COMPONENT_BEHAVIOR, COMPONENT_SYNC }
 Components can indicate how they want to be handled by their type. More...
 
enum  RunState {
  NO_RUN_STATE = 0, START, STARTING, RUNNABLE,
  SATISFIED, PAUSE, PAUSING, PAUSED,
  RESUME, RESUMING, RESETTING, STOP,
  STOPPING, STOPPED
}
 
- Protected Types inherited from Component
enum  ConfigOption { CONFIG_SIMULATE_HARDWARE, CONFIG_POWER, CONFIG_FREQUENCY, CONFIG_LATENCY }
 
- Protected Member Functions inherited from AsyncComponent
 AsyncComponent (const Str &name, const Module *module, const Timespan period, bool idlePriority=false)
 Protected constructor for components that run in periodic asynchronous threads. More...
 
 AsyncComponent (const Str &name, const Module *module, bool idlePriority=false)
 Protected constructor for components that run in continuous asynchronous threads. More...
 
- Protected Member Functions inherited from Component
virtual ConfigURI getConfigURI (ConfigOption configOption, ElementURI forElement) const
 Should return [myNamespace]::POWER_[forElement], [myNamespace]::LATENCY_[forElement], etc. More...
 
virtual void setDurationOfLastRun (const Timespan &span)
 
virtual void setTimeOfRun (const Timestamp &time)
 
virtual void setTimeOfLastRun (const Timestamp &time)
 
virtual void setDt (const Timespan &dt)
 
virtual bool setEnabled (bool enabled=true)
 
void setRunState (const RunState runState)
 
const Timespan getPauseTime () const
 
virtual void setFailureMissionCritical (bool failureMissionCritical)
 
bool simulateHardware ()
 
- Protected Attributes inherited from AsyncComponent
bool idlePriority_
 
- Protected Attributes inherited from Component
Logger logger_
 
Syslog::Severity debugLevel_
 
ComponentState state_
 Keep track of whether the component has "completed" or should be run again. More...
 
Timespan desiredPeriod_
 
CodedStrname_
 Store the component's name (used for logging purposes) More...
 
Timestamp timeOfRun_
 
Timestamp timeOfLastRun_
 
Timespan durationOfLastRun_
 
Timespan dt_
 
Timespan retryTimeout_
 
bool enabled_
 
bool failureReported_
 Indicates if the failure has been reported – cuts down on syslog. More...
 
bool criticalFailureReported_
 Indicates if a "Critical" failure has been reported – cuts down on syslog. More...
 
bool recoveringFromCritical_
 Indicates that a component had a previous critical failure that has been cleared temporarily awaiting final word from the component itself. More...
 
bool failureUninitialized_
 Indicates if the failure has resulted in an uninitialize call. More...
 
int failCount_
 Number of failures logged by PCaller. More...
 
bool failureMissionCritical_
 If true (default), complete failure ends mission. More...
 
int allowableFailures_
 Number of failures allowed to occur. More...
 
int skippedRunsSinceFail_
 Number of skipped runs since failureMode_ set by failCount_. More...
 
FailureMode::FailType failureType_
 Failed status. If failCount_ > 0, then this may be reset. More...
 
Timestamp timeOfFailure_
 Time of last failure. Relevant only if failed=true. More...
 
Timestamp writeTimestamp_
 Time of last write. More...
 
FlexArray< DataReader * > readers_
 
FlexArray< DataWriter * > writers_
 
const Modulemodule_
 
Timespan pauseTime_
 
bool meteringEnabled_
 If true, metering is enabled. More...
 
DataWriterdurationOfLastRunWriter_
 Writer for durationOfLastRun. More...
 
DataWritervoltageWriter_
 
DataWriteravgVoltageWriter_
 
DataWritercurrentWriter_
 
DataWriteravgCurrentWriter_
 
bool persistentPause_
 True if data is persistent while component is paused. More...
 

Detailed Description

Software interface to Neil Brown CTD.

Also provides interface to SimSlate for providing simulated temperature, salinity, and depth.

Note
still needs to be coded for the actual Neil Brown CTD

CTD_NeilBrown.h should only be included by CTD_NeilBrown.cpp Other classes should include CTD_NeilBrownIF.h

Constructor & Destructor Documentation

CTD_NeilBrown::~CTD_NeilBrown ( )
virtual
CTD_NeilBrown::CTD_NeilBrown ( const CTD_NeilBrown old)
private

Member Function Documentation

int CTD_NeilBrown::CalcChecksum ( const char *  response)
staticprivate

Referenced by parseResponse().

ConfigURI CTD_NeilBrown::getConfigURI ( ConfigOption  configOption) const
virtual

Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.

Reimplemented from Component.

References Component::CONFIG_POWER, Component::CONFIG_SIMULATE_HARDWARE, and ConfigURI::NO_CONFIG_URI.

void CTD_NeilBrown::go ( )
private

References Component::simulateHardware(), and uart_.

Referenced by resuming(), and starting().

bool CTD_NeilBrown::isDataRequested ( )
private
bool CTD_NeilBrown::parseResponse ( char *  data)
private
Component::RunState CTD_NeilBrown::paused ( )
virtual

Should eventually follow a PAUSE request: should set continueTime.

Reimplemented from Component.

References debug_, Syslog::INFO, isDataRequested(), Component::logger_, Component::PAUSED, pausePeriod_, resume(), Timespan::sleepFor(), and Logger::syslog().

virtual RunState CTD_NeilBrown::resetting ( )
inlinevirtual

Might occur in case of Error.

Reimplemented from Component.

References stop().

Component::RunState CTD_NeilBrown::resuming ( )
virtual

Might follow a PAUSE...RESUME sequence.

Reimplemented from Component.

References debug_, go(), Syslog::INFO, Component::logger_, nextLineQuestionable_, Timestamp::Now(), Component::RUNNABLE, startTime_, and Logger::syslog().

void CTD_NeilBrown::run ( void  )
virtual

The actual "payload" of the component.

Reimplemented from Component.

Component::RunState CTD_NeilBrown::starting ( )
virtual

Might follow a STOP...START sequence.

Reimplemented from Component.

References debug_, go(), Syslog::INFO, Component::logger_, Component::RUNNABLE, and Logger::syslog().

void CTD_NeilBrown::uninitialize ( void  )
virtual

Member Data Documentation

bool CTD_NeilBrown::badConductivity_
private
bool CTD_NeilBrown::badPressure_
private

Referenced by preprocessData(), and writeData().

bool CTD_NeilBrown::badSalinity_
private
bool CTD_NeilBrown::badTemperature_
private
DataWriter* CTD_NeilBrown::binMeanConductivityWriter_
private
DataWriter* CTD_NeilBrown::binMeanSalinityWriter_
private
DataWriter* CTD_NeilBrown::binMeanTemperatureWriter_
private
DataWriter* CTD_NeilBrown::binMedianConductivityWriter_
private
DataWriter* CTD_NeilBrown::binMedianSalinityWriter_
private
DataWriter* CTD_NeilBrown::binMedianTemperatureWriter_
private
DataWriter* CTD_NeilBrown::binStandardDeviationConductivityWriter_
private
DataWriter* CTD_NeilBrown::binStandardDeviationSalinityWriter_
private
DataWriter* CTD_NeilBrown::binStandardDeviationTemperatureWriter_
private
Timestamp CTD_NeilBrown::binTime_
private
unsigned int CTD_NeilBrown::bufferOffset_
private
float CTD_NeilBrown::conductivity_
private
UniversalDataWriter* CTD_NeilBrown::conductivityWriter_
private
Timespan CTD_NeilBrown::ctdTimeout_
private

Referenced by runnable().

bool CTD_NeilBrown::debug_
private
float CTD_NeilBrown::density_
private
UniversalDataWriter* CTD_NeilBrown::densityWriter_
private
float CTD_NeilBrown::depth_
private
UniversalDataWriter* CTD_NeilBrown::depthWriter_
private
char CTD_NeilBrown::deviceResponse_[512]
private

Referenced by receive(), and start().

DataReader* CTD_NeilBrown::gfScanActiveReader_
private

Referenced by CTD_NeilBrown(), and preprocessData().

float CTD_NeilBrown::latitude_
private

Referenced by getSimulatedData(), and runnable().

UniversalDataReader* CTD_NeilBrown::latitudeReader_
private

Referenced by CTD_NeilBrown(), and runnable().

LoadControl CTD_NeilBrown::loadControl_
private
float CTD_NeilBrown::maxPressBound_
private

Referenced by preprocessData(), and readConfig().

ConfigReader* CTD_NeilBrown::maxPressBoundCfgReader_
private

Referenced by CTD_NeilBrown(), and readConfig().

float CTD_NeilBrown::maxSalinityBound_
private
ConfigReader* CTD_NeilBrown::maxSalinityBoundCfgReader_
private

Referenced by CTD_NeilBrown(), and readConfig().

float CTD_NeilBrown::minPressBound_
private

Referenced by preprocessData(), and readConfig().

ConfigReader* CTD_NeilBrown::minPressBoundCfgReader_
private

Referenced by CTD_NeilBrown(), and readConfig().

float CTD_NeilBrown::minSalinityBound_
private
ConfigReader* CTD_NeilBrown::minSalinityBoundCfgReader_
private

Referenced by CTD_NeilBrown(), and readConfig().

bool CTD_NeilBrown::nextLineQuestionable_
private

Referenced by resuming().

ConfigReader* CTD_NeilBrown::offsetCfgReader_
private

Referenced by CTD_NeilBrown(), and readConfig().

Timespan CTD_NeilBrown::pausePeriod_
private
bool CTD_NeilBrown::pressBoundingError_
private
float CTD_NeilBrown::pressureDB_
private
float CTD_NeilBrown::pressureOffset_
private

Referenced by parseResponse(), and readConfig().

UniversalDataWriter* CTD_NeilBrown::pressureWriter_
private
float CTD_NeilBrown::salinity_
private
UniversalDataWriter* CTD_NeilBrown::salinityWriter_
private
Timestamp CTD_NeilBrown::startTime_
private
float CTD_NeilBrown::temperature_
private
UniversalDataWriter* CTD_NeilBrown::temperatureWriter_
private
std::vector<float> CTD_NeilBrown::temporal_bin_conductivity_
private
size_t CTD_NeilBrown::temporal_bin_count_
private
std::vector<float> CTD_NeilBrown::temporal_bin_salinity_
private
std::vector<float> CTD_NeilBrown::temporal_bin_temperature_
private
UartStream CTD_NeilBrown::uart_
private
Timespan CTD_NeilBrown::uartTimeout_
private

Referenced by preprocessData().


The documentation for this class was generated from the following files: