LRAUV  revA
DataOverHttps Class Reference

Provides software interface for sending sbds over the https when an https connection is available. More...

#include <DataOverHttps.h>

Inheritance diagram for DataOverHttps:
Collaboration diagram for DataOverHttps:

Public Member Functions

 DataOverHttps (const Module *module)
 
virtual ~DataOverHttps ()
 
virtual void run ()
 The actual "payload" of the component. More...
 
virtual void initialize ()
 Provide a space for initialization before being run. More...
 
virtual 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 SyncComponent
CycleOrder getCycleOrder (void)
 Getter function for controlThreadOrderPreference. More...
 
void setRepeating (bool repeating)
 
int getDivisor () const
 
int getModulo () const
 
bool isRepeater ()
 
bool isRepeating ()
 
- 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 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 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 Subseqent. More...
 
virtual RunState runnable ()
 Should eventually follow a START request or RESETTING. More...
 
virtual RunState satisfied ()
 Possible return value of a Behavior. More...
 
virtual RunState pause ()
 Pause for a short period (indicated by pauseTime) More...
 
virtual RunState pausing ()
 Might follow a PAUSE request. 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 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 ()
 Should eventually follow a STOP 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 Types

enum  DataState {
  TCP_CONNECT, TCP_CONNECTING, SSL_CONNECT, SSL_CONNECTING,
  DATA_WRITE, DATA_WRITING, DATA_READ, DISCONNECT,
  DISCONNECTED
}
 
enum  KeyType {
  KEY_UNKNOWN = -1, KEY_BUSY, KEY_FILE, KEY_FILENAME,
  KEY_FILESIZE, KEY_MOMSN, KEY_MTMSN, KEY_VEHICLE,
  KEY_COUNT
}
 

Private Member Functions

 DataOverHttps (const DataOverHttps &old)
 
bool loadParams (void)
 
bool readConfig ()
 
DataState tcpConnect ()
 
DataState tcpConnecting ()
 
DataState sslConnect ()
 
DataState sslConnecting ()
 
DataState dataWrite ()
 
DataState dataWriting ()
 
DataState dataRead ()
 
DataState disconnect ()
 

Static Private Member Functions

static KeyType Str2KeyType (const char *const keyTypeStr)
 
static bool ParseDataRead (char **data, KeyType &key, char **value)
 

Private Attributes

UniversalDataWritercommunicationsWriter_
 
ConfigReadersendDataToShoreCfgReader_
 Configuration readers. More...
 
ConfigReaderconnectionTimeoutCfgReader_
 
ConfigReaderperiodCfgReader_
 
ConfigReadertimeoutCfgReader_
 
ConfigReaderverbosityLevelCfgReader_
 
bool debug_
 
int verbosity_
 
bool sendDataToShore_
 
bool wasConnected_
 
float connectionTimeout_
 
float period_
 
float timeout_
 
Timestamp connectStart_
 
Timestamp lastPoll_
 
Timestamp lastComms_
 
StrValue dashIP_
 
StrValue dashPath_
 
StrValue dashPort_
 
int dashSSL_
 
StrValue imei_
 
StrValue imeiPassword_
 
StrValue keyText_
 
Str headerStart_
 
Str contentStart_
 
struct addrinfo * addrinfo_
 
int socket_
 
SSL * sslHandle_
 
SSL_CTX * sslContext_
 
char sslErrBuf_ [120]
 
enum DataOverHttps::DataState dataState_
 
bool busy_
 
char * outgoing_
 
size_t outgoingSize_
 
char buffer_ [BUFFER_SIZE]
 
char filename_ [BUFFER_SIZE]
 
char decoded_ [BUFFER_SIZE]
 
size_t decodedSize_
 
int bufferPos_
 
int dataStart_
 
int dataSize_
 
Str sendFilename_
 Name of file currently being sent to shore. More...
 
Str lastMtmsn_
 Identity of last packet received from shore. More...
 
bool cmdReceived_
 

Static Private Attributes

static const char *const KEY_TYPE_STRS [KEY_COUNT]
 
static const int BUFFER_SIZE = 2048
 

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
}
 
- Static Public Attributes inherited from SyncComponent
static const int CYCLE_INCREMENT
 
static const int CYCLE_REPEAT_OFFSET
 
static const CycleOrder CYCLE_STARTER
 
static const CycleOrder CYCLE_SIMULATOR
 
static const CycleOrder CYCLE_SENSOR
 
static const CycleOrder CYCLE_DERIVATION
 
static const CycleOrder CYCLE_ESTIMATION
 
static const CycleOrder CYCLE_NAVIGATION
 
static const CycleOrder CYCLE_MISSION_MANAGER
 
static const CycleOrder CYCLE_MISSION
 
static const CycleOrder CYCLE_CONTROL
 
static const CycleOrder CYCLE_SERVO
 
static const CycleOrder CYCLE_TEST
 
static const CycleOrder CYCLE_REPORTER
 
static const CycleOrder CYCLE_LOGGER
 
- Protected Types inherited from Component
enum  ConfigOption { CONFIG_SIMULATE_HARDWARE, CONFIG_POWER, CONFIG_FREQUENCY, CONFIG_LATENCY }
 
- Protected Member Functions inherited from SyncSensorComponent
 SyncSensorComponent (const Str &name, const Module *module, int divisor=1, int modulo=0)
 
- Protected Member Functions inherited from SyncComponent
void setRepeater (bool repeater)
 
- 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 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

Provides software interface for sending sbds over the https when an https connection is available.

DataOverHttps.h should only be included by DataOverHttps.cpp Other classes should include DataOverHttpsIF.h

Constructor & Destructor Documentation

DataOverHttps::~DataOverHttps ( )
virtual

References addrinfo_.

DataOverHttps::DataOverHttps ( const DataOverHttps old)
private

Member Function Documentation

ConfigURI DataOverHttps::getConfigURI ( ConfigOption  configOption) const
virtual

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

Reimplemented from Component.

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

void DataOverHttps::initialize ( void  )
virtual

Provide a space for initialization before being run.

Reimplemented from Component.

References dataState_, and TCP_CONNECT.

bool DataOverHttps::ParseDataRead ( char **  data,
KeyType key,
char **  value 
)
staticprivate

Referenced by dataRead().

DataOverHttps::KeyType DataOverHttps::Str2KeyType ( const char *const  keyTypeStr)
staticprivate
void DataOverHttps::uninitialize ( void  )
virtual

Provide a space for uninitialization.

Reimplemented from Component.

References dataState_, disconnect(), and wasConnected_.

Member Data Documentation

struct addrinfo* DataOverHttps::addrinfo_
private

Referenced by tcpConnect(), and ~DataOverHttps().

char DataOverHttps::buffer_[BUFFER_SIZE]
private

Referenced by dataRead().

const int DataOverHttps::BUFFER_SIZE = 2048
staticprivate

Referenced by dataRead().

int DataOverHttps::bufferPos_
private

Referenced by dataRead(), and dataWriting().

bool DataOverHttps::busy_
private

Referenced by dataRead(), and dataWrite().

bool DataOverHttps::cmdReceived_
private

Referenced by dataWriting(), and run().

UniversalDataWriter* DataOverHttps::communicationsWriter_
private

Referenced by DataOverHttps(), and run().

float DataOverHttps::connectionTimeout_
private
ConfigReader* DataOverHttps::connectionTimeoutCfgReader_
private

Referenced by DataOverHttps(), and readConfig().

Timestamp DataOverHttps::connectStart_
private
Str DataOverHttps::contentStart_
private

Referenced by dataWrite(), and loadParams().

StrValue DataOverHttps::dashIP_
private

Referenced by loadParams(), and tcpConnect().

StrValue DataOverHttps::dashPath_
private

Referenced by loadParams().

StrValue DataOverHttps::dashPort_
private

Referenced by loadParams(), and tcpConnect().

int DataOverHttps::dashSSL_
private
int DataOverHttps::dataSize_
private

Referenced by dataRead(), and dataWriting().

int DataOverHttps::dataStart_
private

Referenced by dataRead(), and dataWriting().

enum DataOverHttps::DataState DataOverHttps::dataState_
private

Referenced by initialize(), run(), and uninitialize().

bool DataOverHttps::debug_
private

Referenced by dataRead().

char DataOverHttps::decoded_[BUFFER_SIZE]
private

Referenced by dataRead(), and dataWriting().

size_t DataOverHttps::decodedSize_
private

Referenced by dataRead(), dataWriting(), and run().

char DataOverHttps::filename_[BUFFER_SIZE]
private

Referenced by dataRead().

Str DataOverHttps::headerStart_
private

Referenced by dataWrite(), and loadParams().

StrValue DataOverHttps::imei_
private

Referenced by loadParams().

StrValue DataOverHttps::imeiPassword_
private

Referenced by loadParams().

const char *const DataOverHttps::KEY_TYPE_STRS
staticprivate
Initial value:
=
{
"busy",
"file",
"filename",
"fileSize",
"momsn",
"mtmsn",
"vehicle",
}
StrValue DataOverHttps::keyText_
private

Referenced by dataWriting(), and loadParams().

Timestamp DataOverHttps::lastComms_
private

Referenced by dataRead(), and run().

Str DataOverHttps::lastMtmsn_
private

Identity of last packet received from shore.

Referenced by dataRead(), and dataWrite().

Timestamp DataOverHttps::lastPoll_
private

Referenced by run().

char* DataOverHttps::outgoing_
private

Referenced by dataWrite(), dataWriting(), and disconnect().

size_t DataOverHttps::outgoingSize_
private

Referenced by dataWrite(), dataWriting(), and disconnect().

float DataOverHttps::period_
private

Referenced by readConfig(), and run().

ConfigReader* DataOverHttps::periodCfgReader_
private

Referenced by DataOverHttps(), and readConfig().

bool DataOverHttps::sendDataToShore_
private

Referenced by readConfig(), and run().

ConfigReader* DataOverHttps::sendDataToShoreCfgReader_
private

Configuration readers.

Referenced by DataOverHttps(), and readConfig().

Str DataOverHttps::sendFilename_
private

Name of file currently being sent to shore.

Referenced by dataRead(), dataWrite(), and run().

int DataOverHttps::socket_
private
SSL_CTX* DataOverHttps::sslContext_
private

Referenced by disconnect(), and sslConnect().

char DataOverHttps::sslErrBuf_[120]
private
SSL* DataOverHttps::sslHandle_
private
float DataOverHttps::timeout_
private

Referenced by readConfig(), and run().

ConfigReader* DataOverHttps::timeoutCfgReader_
private

Referenced by DataOverHttps(), and readConfig().

int DataOverHttps::verbosity_
private
ConfigReader* DataOverHttps::verbosityLevelCfgReader_
private

Referenced by DataOverHttps(), and readConfig().

bool DataOverHttps::wasConnected_
private

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