39 template <
class MSG_CLASS>
42 return isOfType(MSG_CLASS::msg_type);
122 #define GNSS_MESSAGE_BINARY_BLOCK(DATA_PTR, DATA_LEN) \ 124 void internal_writeToStream(mrpt::serialization::CArchive& out) \ 127 out << static_cast<uint32_t>(DATA_LEN); \ 128 out.WriteBuffer(DATA_PTR, DATA_LEN); \ 130 void internal_readFromStream(mrpt::serialization::CArchive& in) override \ 132 uint32_t nBytesInStream; \ 133 in >> nBytesInStream; \ 134 ASSERT_EQUAL_(nBytesInStream, DATA_LEN); \ 135 in.ReadBuffer(DATA_PTR, DATA_LEN); \ 140 #define GNSS_BINARY_MSG_DEFINITION_START(_MSG_ID) \ 141 struct Message_##_MSG_ID : public gnss_message \ 143 GNSS_MESSAGE_BINARY_BLOCK(&fields, sizeof(fields)) \ 148 Message_##_MSG_ID() : gnss_message((gnss_message_type_t)msg_type) {} \ 151 #define GNSS_BINARY_MSG_DEFINITION_MID \ 152 content_t() { ::memset(this, 0, sizeof(*this)); } \ 156 void dumpToStream(std::ostream& out) const override; 158 #define GNSS_BINARY_MSG_DEFINITION_MID_END \ 162 #define GNSS_BINARY_MSG_DEFINITION_END \ 163 GNSS_BINARY_MSG_DEFINITION_MID \ 164 GNSS_BINARY_MSG_DEFINITION_MID_END 167 #pragma pack(push, 1) 196 #pragma pack(pop) // End of pack = 1 bool operator==(const UTC_time &o) const
const gnss_message * operator->() const
virtual ~gnss_message()=default
mrpt::system::TTimeStamp getAsTimestamp(const mrpt::system::TTimeStamp &date) const
Build an MRPT timestamp with the hour/minute/sec of this structure and the date from the given timest...
UTC (Coordinated Universal Time) time-stamp structure for GPS messages.
gnss_message_type_t
List of all known GNSS message types.
void readFromStream(mrpt::serialization::CArchive &in)
Save to binary stream.
gnss_message_ptr & operator=(const gnss_message_ptr &o)
bool isOfType(const gnss_message_type_t type_id) const
bool operator!=(const gnss_message_ptr &o) const
void dumpToConsole(std::ostream &o) const
Dumps the contents of the observation in a human-readable form to an std::ostream (set to std::cout t...
bool operator==(const gnss_message_ptr &o) const
gnss_message(gnss_message_type_t msg_type_id)
void readFromStream(mrpt::serialization::CArchive &in)
Load from binary stream into this existing object.
#define ASSERT_(f)
Defines an assertion mechanism.
mrpt::Clock::time_point TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
bool operator!=(const UTC_time &o) const
virtual void dumpToStream(std::ostream &out) const =0
Dumps the contents of the observation in a human-readable form to a given output stream.
virtual ~gnss_message_ptr()
Dtor: it frees the pointee memory.
virtual bool getAllFieldValues(std::ostream &o) const
Dumps a line with the sequence of all field values (without a line feed at the end).
static gnss_message * readAndBuildFromStream(mrpt::serialization::CArchive &in)
Load from binary stream and creates object detecting its type (class factory).
void writeToStream(mrpt::serialization::CArchive &out) const
Save to binary stream.
gnss_message_type_t message_type
Type of GNSS message.
GLsizei const GLchar ** string
static gnss_message * Factory(const gnss_message_type_t msg_id)
Creates message.
gnss_message_ptr()
Ctor (default: nullptr pointer)
bool operator!=(const gnss_message *o) const
virtual bool getAllFieldDescriptions(std::ostream &o) const
Dumps a header for getAllFieldValues()
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Virtual base class for "archives": classes abstracting I/O streams.
Pure virtual base for all message types.
bool operator==(const gnss_message *o) const
virtual void internal_readFromStream(mrpt::serialization::CArchive &in)=0
Save to binary stream.
static bool FactoryKnowsMsgType(const gnss_message_type_t msg_id)
Returns true if Factory() has a registered constructor for this msg type.
const std::string & getMessageTypeAsString() const
Returns "NMEA_GGA", etc.
virtual void internal_writeToStream(mrpt::serialization::CArchive &out) const =0
Save to binary stream.
void writeToStream(mrpt::serialization::CArchive &out) const
Save to binary stream.
A smart pointer to a GNSS message.
gnss_message *& operator->()