ValoFly TetherCom Library  29
Communication library for ValoFly Tether.Solutions ground stations
TetherCom.h
Go to the documentation of this file.
1 //
2 // Copyright (C) ValoFly GmbH - All Rights Reserved
3 //
11 #ifndef _VALOFLY_TETHERCOM_LIB_HEADER_
12 #define _VALOFLY_TETHERCOM_LIB_HEADER_
13 
15 
16 #include <exception>
17 #include <vector>
18 #include <string>
19 #include <sstream>
20 #include <iostream>
21 
23 namespace VALOFLY {
24 
26 
27  class IOException : public std::exception {
28  // Disable copy constructors
29  IOException& operator=(const IOException&);
30  std::string _exWhat;
31 
32  public:
38  explicit IOException(const char* description)
39  {
40  std::stringstream ss;
41  ss << "IO Exception: " << description;
42  _exWhat = ss.str();
43  }
49  IOException(const IOException& other) : _exWhat(other._exWhat) {}
50 
51  virtual ~IOException() noexcept {}
52 
58  virtual const char* what() const throw () {
59  return _exWhat.c_str();
60  }
61  };
62 
64 
65  class DataException : public std::exception {
66  // Disable copy constructors
67  DataException& operator=(const DataException&);
68  std::string _exWhat;
69 
70  public:
76  explicit DataException(const char* description)
77  {
78  std::stringstream ss;
79  ss << "Data Stream Exception: " << description;
80  _exWhat = ss.str();
81  }
87  DataException(const DataException& other) : _exWhat(other._exWhat) {}
88 
89  virtual ~DataException() noexcept {}
90 
96  virtual const char* what() const throw () {
97  return _exWhat.c_str();
98  }
99  };
100 
102 
103  class TetherCom
104  {
105  public:
106  /******************************************************************/
107  /* Public communication definitions */
108  /******************************************************************/
109 
111 
114  struct systemConfig //
115  {
120  };
121 
123  struct cableStatus
124  {
125  float lengthUnwound = 0;
126  float speed = 0;
128  float retractionTorque = 0;
133  };
134 
136  struct envStatus
137  {
138  float temp1 = -128;
139  float temp2 = -128;
140  float temp3 = -128;
141  float temp4 = -128;
142  float humidity1 = -128;
143  float pressure1 = 0;
148  int fan1RPM = 0;
150  int fan2RPM = 0;
152  };
153 
156  {
157  float mainsU = 0;
158  float mainsI = 0;
159  float mainsF = 0;
164  };
165 
168  {
169  float uavVoltage = 0;
170  float uavCurrent = 0;
171  float uavPower = 0;
173  int uavBatCellCount = 0;
174  };
175 
178  {
182  uint32_t systemTime = 0;
183  uint32_t operationTime = 0;
184  uint32_t flightTime = 0;
185  uint32_t operationFlightTimeSum = 0;
186  uint32_t operationFlightCountSum = 0;
188  };
189 
192  {
193  int cableEnabled = 0;
194  int envEnabled = 0;
195  int energyGSEnabled = 0;
198  };
199 
202  {
209  };
210 
213  {
214  std::string productType = "";
215  std::string model = "";
216  std::string serialNumber = "";
217  std::string dayOfProduction = "";
218  std::string hardwareVersion = "";
221  {
222  std::string mainCtrl = "";
223  std::string reelCtrl = "";
224  std::string lpwrCtrl = "";
225  std::string hpwrCtrl = "";
226  std::string envCtrl = "";
227  std::string netCtrl = "";
228  std::string backupBatteryCtrl = "";
230  std::string protocolVersion = "";
231  std::string uavCellVoltages = "";
232  int maxPower = 0;
233  std::string cableType = "";
234  int maxCableLength = 0;
236  uint32_t flightTimeSum = 0;
237  uint32_t flightCount = 0;
238  uint32_t operationTimeSum = 0;
239  uint32_t operationCount = 0;
240  uint32_t systemTimeSum = 0;
241  uint32_t systemUseCount = 0;
242  uint32_t timeToMaintenance = 0;
244  };
245 
246  private:
250  class TetherComImpl;
251  TetherComImpl* _pImpl;
252 
253  public:
254  TetherCom();
255  TetherCom(TetherCom&&);
256  TetherCom(const TetherCom&) = delete; // non construction-copyable
257  TetherCom& operator=(TetherCom&&) = default; // move assignment operator
258  TetherCom& operator=(const TetherCom&) = delete; // non copyable
259  ~TetherCom();
260 
268  void getSerialPortsInfo(std::vector<std::string>& devListPort, std::vector<std::string>& devListDesc, std::vector<std::string>& devListHwID);
269 
271  void printSerialPortList();
272 
277  void printSerialPortList(std::ostream& stream);
278 
286  void openConnection(const std::string& portName);
287 
293  void closeConnection();
294 
300  int getConnectionStatus();
301 
307  bool isConnected();
308 
315  void setConnectionTimeout(const unsigned int timeout);
316 
322  int getConnectionTimeout();
323 
332  void getSystemDetails(systemDetails& sysDetails);
333 
342  void getSystemStatus(systemStatus& sysStatus);
343 
373 
387  bool checkSystemStatus(systemStatus& sysStatus, TetherComDefinitions::systemError& errorStatus, bool checkMaintenance = false);
388 
400  bool checkSystemStatus(systemStatus& sysStatus, systemDetails& sysDetails, TetherComDefinitions::systemError& errorStatus, bool checkMaintenance = true);
401 
410  void getSystemConfig(systemConfig& config);
411 
421  void setSystemConfig(const systemConfig& conf);
422 
431  void setSystemActivation(bool activation);
432 
442  void setCableRetractionTorque(float retractionTorque);
443 
453  void setCableRetractionStartLength(float startLength);
454 
464 
474 
484  void print();
485 
492  void print(systemStatus& sysStatus, std::ostream& stream = std::cout);
493 
500  void print(systemDetails& sysDetails, std::ostream& stream = std::cout);
501 
507  std::string getLibBuild();
508 
514  void getLibBuild(std::string& build);
515 
521  std::string getLibProtocolVersion();
522 
528  void getLibProtocolVersion(std::string& version);
529 
533  void printVersionDetails();
534 
540  void printVersionDetails(std::ostream& stream);
541 
542  };
543 };
544 
545 #endif // _VALOFLY_TETHERCOM_LIB_HEADER_
Data handling exception class.
Definition: TetherCom.h:65
DataException(const DataException &other)
Definition: TetherCom.h:87
DataException(const char *description)
Definition: TetherCom.h:76
virtual const char * what() const
Definition: TetherCom.h:96
IO handling exception class.
Definition: TetherCom.h:27
IOException(const char *description)
Definition: TetherCom.h:38
virtual const char * what() const
Definition: TetherCom.h:58
IOException(const IOException &other)
Definition: TetherCom.h:49
Communication class for ValoFly Tether.Solutions Ground Stations.
Definition: TetherCom.h:104
void getSystemStatus(systemStatus &sysStatus)
Definition: TetherCom.cpp:119
void openConnection(const std::string &portName)
Definition: TetherCom.cpp:59
void setSystemActivation(bool activation)
Definition: TetherCom.cpp:204
bool checkSystemStatus(TetherComDefinitions::systemError &errorStatus)
Definition: TetherCom.cpp:135
void setCableRetractionStartLength(float startLength)
Definition: TetherCom.cpp:236
void getSystemStatusConfig(systemStatusConfig &conf)
Definition: TetherCom.cpp:252
void closeConnection()
Definition: TetherCom.cpp:71
void setConnectionTimeout(const unsigned int timeout)
Definition: TetherCom.cpp:93
bool isConnected()
Definition: TetherCom.cpp:88
void setSystemConfig(const systemConfig &conf)
Definition: TetherCom.cpp:188
void getSystemDetails(systemDetails &sysDetails)
Definition: TetherCom.cpp:103
void printVersionDetails()
Definition: TetherCom.cpp:330
void printSerialPortList()
Definition: TetherCom.cpp:49
int getConnectionTimeout()
Definition: TetherCom.cpp:98
void setCableRetractionTorque(float retractionTorque)
Definition: TetherCom.cpp:220
void getSystemConfig(systemConfig &config)
Definition: TetherCom.cpp:172
void setSystemStatusConfig(systemStatusConfig &conf)
Definition: TetherCom.cpp:268
void print()
Definition: TetherCom.cpp:284
int getConnectionStatus()
Definition: TetherCom.cpp:83
std::string getLibBuild()
Definition: TetherCom.cpp:310
std::string getLibProtocolVersion()
Definition: TetherCom.cpp:320
void getSerialPortsInfo(std::vector< std::string > &devListPort, std::vector< std::string > &devListDesc, std::vector< std::string > &devListHwID)
Definition: TetherCom.cpp:44
systemError
Definition: TetherComDefinitions.h:65
Namespace for classes and members developed by ValoFly GmbH.
Definition: TetherCom.h:23
Definition: TetherCom.h:124
int retractionStatus
Definition: TetherCom.h:127
float retractionStartLength
Definition: TetherCom.h:129
float speed
Definition: TetherCom.h:126
int guideStatus
Definition: TetherCom.h:131
float lengthUnwound
Definition: TetherCom.h:125
int reelStatus
Definition: TetherCom.h:132
float retractionTorque
Definition: TetherCom.h:128
int tetherStatus
Definition: TetherCom.h:130
Definition: TetherCom.h:156
float mainsU
Definition: TetherCom.h:157
int ctrlSupplyStatus
Definition: TetherCom.h:161
int mainsStatus
Definition: TetherCom.h:160
float mainsF
Definition: TetherCom.h:159
float backupBatteryVoltage
Definition: TetherCom.h:162
int backupBatteryStatus
Definition: TetherCom.h:163
float mainsI
Definition: TetherCom.h:158
Definition: TetherCom.h:168
int extSupplyStatus
Definition: TetherCom.h:172
float uavVoltage
Definition: TetherCom.h:169
float uavPower
Definition: TetherCom.h:171
float uavCurrent
Definition: TetherCom.h:170
int uavBatCellCount
Definition: TetherCom.h:173
Definition: TetherCom.h:137
float temp3
Definition: TetherCom.h:140
int envSensor3Status
Definition: TetherCom.h:146
int fan2RPM
Definition: TetherCom.h:150
float temp1
Definition: TetherCom.h:138
int fan1RPM
Definition: TetherCom.h:148
float pressure1
Definition: TetherCom.h:143
int fan2Status
Definition: TetherCom.h:151
int fan1Status
Definition: TetherCom.h:149
float temp4
Definition: TetherCom.h:141
int envSensor4Status
Definition: TetherCom.h:147
int envSensor1Status
Definition: TetherCom.h:144
float temp2
Definition: TetherCom.h:139
float humidity1
Definition: TetherCom.h:142
int envSensor2Status
Definition: TetherCom.h:145
Configuration parameter structure.
Definition: TetherCom.h:115
int cableRetractionStatus
Definition: TetherCom.h:119
float cableRetractionTorque
Definition: TetherCom.h:117
bool systemActivation
Definition: TetherCom.h:116
float cableRetractionStartLength
Definition: TetherCom.h:118
std::string lpwrCtrl
Definition: TetherCom.h:224
std::string envCtrl
Definition: TetherCom.h:226
std::string netCtrl
Definition: TetherCom.h:227
std::string mainCtrl
Definition: TetherCom.h:222
std::string backupBatteryCtrl
Definition: TetherCom.h:228
std::string reelCtrl
Definition: TetherCom.h:223
std::string hpwrCtrl
Definition: TetherCom.h:225
Definition: TetherCom.h:213
std::string dayOfProduction
Definition: TetherCom.h:217
uint32_t flightCount
Definition: TetherCom.h:237
int maintenance_required
Definition: TetherCom.h:243
uint32_t operationCount
Definition: TetherCom.h:239
std::string cableType
Definition: TetherCom.h:233
std::string model
Definition: TetherCom.h:215
uint32_t systemUseCount
Definition: TetherCom.h:241
struct VALOFLY::TetherCom::systemDetails::softwareVersions softwareVersion
uint32_t systemTimeSum
Definition: TetherCom.h:240
int maxPower
Definition: TetherCom.h:232
uint32_t operationTimeSum
Definition: TetherCom.h:238
uint32_t timeToMaintenance
Definition: TetherCom.h:242
std::string productType
Definition: TetherCom.h:214
std::string serialNumber
Definition: TetherCom.h:216
uint32_t flightTimeSum
Definition: TetherCom.h:236
std::string hardwareVersion
Definition: TetherCom.h:218
std::string uavCellVoltages
Definition: TetherCom.h:231
std::string protocolVersion
Definition: TetherCom.h:230
int maxCableLength
Definition: TetherCom.h:234
int networkType
Definition: TetherCom.h:235
Definition: TetherCom.h:178
uint32_t systemTime
Definition: TetherCom.h:182
int backupBatteryStatus
Definition: TetherCom.h:181
int activation
Definition: TetherCom.h:179
uint32_t operationTime
Definition: TetherCom.h:183
uint32_t flightTime
Definition: TetherCom.h:184
uint32_t operationFlightTimeSum
Definition: TetherCom.h:185
int retractionStatus
Definition: TetherCom.h:180
uint32_t operationFlightCountSum
Definition: TetherCom.h:186
int error
Definition: TetherCom.h:187
Definition: TetherCom.h:192
int energyUAVEnabled
Definition: TetherCom.h:196
int energyGSEnabled
Definition: TetherCom.h:195
int envEnabled
Definition: TetherCom.h:194
int systemStatesEnabled
Definition: TetherCom.h:197
int cableEnabled
Definition: TetherCom.h:193
Definition: TetherCom.h:202
systemStates sysStates
Definition: TetherCom.h:208
energyUAVStatus energyUAV
Definition: TetherCom.h:207
systemStatusConfig conf
Definition: TetherCom.h:203
envStatus env
Definition: TetherCom.h:205
energyGSStatus energyGS
Definition: TetherCom.h:206
cableStatus cable
Definition: TetherCom.h:204