LRAUV  revA
DataOverHttps.h
Go to the documentation of this file.
1 
12 #ifndef DATAOVERHTTPS_H
13 #define DATAOVERHTTPS_H
14 
16 #include "data/StrValue.h"
17 #include "logger/Logger.h"
18 #include "utils/Timestamp.h"
19 #include "utils/FlexArray.h"
20 #include "DataOverHttpsIF.h"
21 
22 #include <stdint.h>
23 #include <openssl/ssl.h>
24 
27 
28 #define MAX_DOWNLINK_MSG_BYTES 340L
29 #define MAX_UPLINK_MSG_BYTES 270L
30 
41 {
42 public:
43 
44  DataOverHttps( const Module* module );
45 
46  virtual ~DataOverHttps();
47 
48  virtual void run();
49 
50  virtual void initialize();
51 
52  virtual void uninitialize();
53 
55  virtual ConfigURI getConfigURI( ConfigOption configOption ) const;
56 
57 private:
58 
59  // Note that the copy constructor below is private and not given a body.
60  // Any attempt to call it will return a compiler error.
61  DataOverHttps( const DataOverHttps& old ); // disallow copy constructor
62 
63  // Slate outputs
65 
72 
73  bool debug_;
74  int verbosity_; // A config setting you can use to increase or decrease the amount of (DEBUG) messages being written to the syslog
75 
79  float period_;
80  float timeout_;
84 
88  int dashSSL_;
94 
95  struct addrinfo* addrinfo_;
96  int socket_;
97  SSL* sslHandle_;
98  SSL_CTX* sslContext_;
99  char sslErrBuf_[120];
100 
101  // initialize vehicle config variables
102  bool loadParams( void );
103  bool readConfig();
104 
106  {
113  DATA_READ, // 6
116  } dataState_;
117 
118  enum KeyType
119  {
121  KEY_BUSY, // 0
122  KEY_FILE, // 1
125  KEY_MOMSN, // 4
126  KEY_MTMSN, // 5
129  };
130 
131  static const char* const KEY_TYPE_STRS[KEY_COUNT];
132 
133  static KeyType Str2KeyType( const char* const keyTypeStr );
134 
135  static bool ParseDataRead( char** data, KeyType &key, char** value );
136 
137  bool busy_;
138  char* outgoing_;
140 
141  static const int BUFFER_SIZE = 2048; // Big enough to contain Tomcat err msgs
145  size_t decodedSize_;
146 
150 
159 
162 
165 
166  // True if a command has been received from shore since the last time power was applied
168 
169 };
170 
171 #endif /*DATAOVERHTTPS_H*/
int bufferPos_
Definition: DataOverHttps.h:147
KeyType
Definition: DataOverHttps.h:118
SSL * sslHandle_
Definition: DataOverHttps.h:97
char decoded_[BUFFER_SIZE]
Definition: DataOverHttps.h:144
Contains the SyncComponent class definition.
ConfigReader * connectionTimeoutCfgReader_
Definition: DataOverHttps.h:68
float connectionTimeout_
Definition: DataOverHttps.h:78
Definition: DataOverHttps.h:112
Definition: DataOverHttps.h:128
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
virtual void initialize()
Provide a space for initialization before being run.
Definition: DataOverHttps.cpp:220
enum DataOverHttps::DataState dataState_
StrValue imeiPassword_
Definition: DataOverHttps.h:90
UniversalDataWriter * communicationsWriter_
Definition: DataOverHttps.h:64
Timestamp lastComms_
Definition: DataOverHttps.h:83
DataState sslConnect()
Definition: DataOverHttps.cpp:496
Abstract Base class for components that collect data for use later in the computation cycle...
Definition: SyncComponent.h:172
ConfigReader * periodCfgReader_
Definition: DataOverHttps.h:69
virtual ConfigURI getConfigURI(ConfigOption configOption) const
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Definition: DataOverHttps.cpp:360
Timestamp connectStart_
Definition: DataOverHttps.h:81
Definition: DataOverHttps.h:114
StrValue dashPath_
Definition: DataOverHttps.h:86
Str contentStart_
Definition: DataOverHttps.h:93
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: UniversalDataWriter.h:24
bool debug_
Definition: DataOverHttps.h:73
DataState dataRead()
Definition: DataOverHttps.cpp:694
DataOverHttps(const Module *module)
Definition: DataOverHttps.cpp:96
char sslErrBuf_[120]
Definition: DataOverHttps.h:99
float timeout_
Definition: DataOverHttps.h:80
Str headerStart_
Definition: DataOverHttps.h:92
Timestamp lastPoll_
Definition: DataOverHttps.h:82
Specifies the interface details for the DataOverHttps component in the SensorModule.
Str sendFilename_
Name of file currently being sent to shore.
Definition: DataOverHttps.h:161
char filename_[BUFFER_SIZE]
Definition: DataOverHttps.h:143
SSL_CTX * sslContext_
Definition: DataOverHttps.h:98
Definition: DataOverHttps.h:124
float period_
Definition: DataOverHttps.h:79
StrValue dashPort_
Definition: DataOverHttps.h:87
bool sendDataToShore_
Definition: DataOverHttps.h:76
bool readConfig()
Definition: DataOverHttps.cpp:206
int verbosity_
Definition: DataOverHttps.h:74
size_t decodedSize_
Definition: DataOverHttps.h:145
int socket_
Definition: DataOverHttps.h:96
DataState disconnect()
Definition: DataOverHttps.cpp:881
Definition: ElementURI.h:166
int dataStart_
Definition: DataOverHttps.h:148
Contains the FlexArrayBase and FlexArray class declarations.
Definition: DataOverHttps.h:125
Definition: DataOverHttps.h:126
Contains the StrValue class definition.
static KeyType Str2KeyType(const char *const keyTypeStr)
Definition: DataOverHttps.cpp:48
int dataSize_
Definition: DataOverHttps.h:149
bool cmdReceived_
Definition: DataOverHttps.h:167
StrValue imei_
Definition: DataOverHttps.h:89
ConfigReader * timeoutCfgReader_
Definition: DataOverHttps.h:70
DataState
Definition: DataOverHttps.h:105
Module is the abstract base class for a collection of Component objects that can be contained in a lo...
Definition: Module.h:45
DataState sslConnecting()
Definition: DataOverHttps.cpp:468
static const int BUFFER_SIZE
Definition: DataOverHttps.h:141
bool wasConnected_
Definition: DataOverHttps.h:77
Definition: DataOverHttps.h:121
static const char *const KEY_TYPE_STRS[KEY_COUNT]
Definition: DataOverHttps.h:131
bool busy_
Definition: DataOverHttps.h:137
Replacement for standard template class string.
Definition: Str.h:12
char * outgoing_
Definition: DataOverHttps.h:138
virtual ~DataOverHttps()
Definition: DataOverHttps.cpp:155
Definition: DataOverHttps.h:111
Definition: ConfigReader.h:13
Definition: DataOverHttps.h:122
int dashSSL_
Definition: DataOverHttps.h:88
Definition: DataOverHttps.h:115
DataState tcpConnecting()
Definition: DataOverHttps.cpp:433
ConfigReader * verbosityLevelCfgReader_
Definition: DataOverHttps.h:71
bool loadParams(void)
Definition: DataOverHttps.cpp:172
Contains the Logger class definition.
DataState tcpConnect()
Definition: DataOverHttps.cpp:371
ConfigReader * sendDataToShoreCfgReader_
Configuration readers.
Definition: DataOverHttps.h:67
Definition: DataOverHttps.h:109
Definition: DataOverHttps.h:120
StrValue keyText_
Definition: DataOverHttps.h:91
StrValue dashIP_
Definition: DataOverHttps.h:85
virtual void run()
The actual "payload" of the component.
Definition: DataOverHttps.cpp:231
DataState dataWriting()
Definition: DataOverHttps.cpp:630
Contains the Timestamp and Timespan class declarations.
virtual void uninitialize()
Provide a space for uninitialization.
Definition: DataOverHttps.cpp:225
Definition: DataOverHttps.h:127
size_t outgoingSize_
Definition: DataOverHttps.h:139
Definition: DataOverHttps.h:107
Str lastMtmsn_
Identity of last packet received from shore.
Definition: DataOverHttps.h:164
Definition: DataOverHttps.h:110
ConfigOption
Definition: Component.h:456
Provides software interface for sending sbds over the https when an https connection is available...
Definition: DataOverHttps.h:40
Wraps a string (see Str) as a DataValue, so strings can be written to and read from the slate...
Definition: StrValue.h:34
Definition: DataOverHttps.h:123
struct addrinfo * addrinfo_
Definition: DataOverHttps.h:95
Definition: DataOverHttps.h:108
static bool ParseDataRead(char **data, KeyType &key, char **value)
Definition: DataOverHttps.cpp:62
Represents absolute times.
Definition: Timestamp.h:31
Definition: DataOverHttps.h:113
DataState dataWrite()
Definition: DataOverHttps.cpp:545
char buffer_[BUFFER_SIZE]
Definition: DataOverHttps.h:142