heartbeat.h 1.45 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
#pragma once

#include "ros_bridge/rapidjson/include/rapidjson/document.h"

namespace ros_bridge {
//! @brief Namespace containing classes and methodes ros message generation.
namespace messages {
//! @brief Namespace containing classes and methodes for geometry_msgs generation.
namespace nemo_msgs {
//! @brief Namespace containing methodes for geometry_msgs/GeoPoint message generation.
namespace heartbeat {


14
std::string messageType();
15 16 17 18 19


//! @brief C++ representation of nemo_msgs/Heartbeat message
class Heartbeat{
public:
20
    Heartbeat() : _status(0){}
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    Heartbeat(int status) :_status(status){}
    Heartbeat(const Heartbeat &heartbeat) : _status(heartbeat.status()){}

    virtual int     status      (void)const    {return _status;}
    virtual void    setStatus   (int status)    {_status = status;}
protected:
    int _status;
};


template <class HeartbeatType>
bool toJson(const HeartbeatType &heartbeat, rapidjson::Value &value, rapidjson::Document::AllocatorType &allocator)
{
    value.AddMember("status", std::int32_t(heartbeat.status()), allocator);
    return true;
}

template <class HeartbeatType>
bool fromJson(const rapidjson::Value &value, HeartbeatType &heartbeat)
{
    if (!value.HasMember("status") || !value["status"].IsInt()){
        assert(false);
        return false;
    }

    heartbeat.setStatus(value["status"].GetInt());
    return true;
}

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