heartbeat.h 1.41 KB
Newer Older
1 2
#pragma once

3
#include <QJsonObject>
4 5 6 7

namespace ros_bridge {
//! @brief Namespace containing classes and methodes ros message generation.
namespace messages {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
8 9
//! @brief Namespace containing classes and methodes for geometry_msgs
//! generation.
10
namespace nemo_msgs {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
11 12
//! @brief Namespace containing methodes for geometry_msgs/GeoPoint message
//! generation.
13 14
namespace heartbeat {

15
std::string messageType();
16 17

//! @brief C++ representation of nemo_msgs/Heartbeat message
Valentin Platzgummer's avatar
Valentin Platzgummer committed
18
class Heartbeat {
19
public:
Valentin Platzgummer's avatar
Valentin Platzgummer committed
20 21 22 23 24 25 26 27 28
  Heartbeat() : _status(0) {}
  Heartbeat(int status) : _status(status) {}
  Heartbeat(const Heartbeat &heartbeat) : _status(heartbeat.status()) {}

  bool operator==(const Heartbeat &hb) { return hb._status == this->_status; }
  bool operator!=(const Heartbeat &hb) { return !operator==(hb); }

  virtual int status(void) const { return _status; }
  virtual void setStatus(int status) { _status = status; }
29 30

protected:
Valentin Platzgummer's avatar
Valentin Platzgummer committed
31
  int _status;
32 33 34
};

template <class HeartbeatType>
35 36
bool toJson(const HeartbeatType &heartbeat, QJsonObject &value) {
  value["status"] = heartbeat.status();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
37
  return true;
38 39 40
}

template <class HeartbeatType>
41 42
bool fromJson(const QJsonObject &value, HeartbeatType &heartbeat) {
  if (!value.contains("status") || !value["status"].isDouble()) {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
43 44 45
    return false;
  }

46
  heartbeat.setStatus(value["status"].toInt());
Valentin Platzgummer's avatar
Valentin Platzgummer committed
47
  return true;
48 49 50 51 52 53
}

} // namespace heartbeat
} // namespace nemo_msgs
} // namespace messages
} // namespace ros_bridge