nmealib 0.0.4
NMEA 0183/NMEA 2000 parsing library
Loading...
Searching...
No Matches
Classes | Public Member Functions | Friends | List of all members
nmealib::nmea0183::XDR Class Reference

Represents a parsed NMEA 0183 XDR (Transducer Measurement) sentence. More...

#include <xdr.h>

Inheritance diagram for nmealib::nmea0183::XDR:
Inheritance graph
[legend]
Collaboration diagram for nmealib::nmea0183::XDR:
Collaboration graph
[legend]

Classes

struct  TransducerMeasurement
 One transducer measurement quadruplet in an XDR sentence. More...
 

Public Member Functions

 XDR (std::string talkerId, std::vector< TransducerMeasurement > transducers)
 Construct an XDR message from field values.
 
 XDR (const XDR &)=default
 
XDRoperator= (const XDR &)=default
 
 XDR (XDR &&) noexcept=default
 
XDRoperator= (XDR &&) noexcept=default
 
 ~XDR () override=default
 
std::unique_ptr< nmealib::Messageclone () const override
 Create a polymorphic copy of this XDR message.
 
const std::vector< TransducerMeasurement > & getTransducers () const noexcept
 Get all transducer measurements in this sentence.
 
std::size_t getTransducerCount () const noexcept
 Get the number of transducer measurements in this sentence.
 
const TransducerMeasurementgetTransducer (std::size_t index) const noexcept
 Get a transducer measurement by index.
 
std::string getStringContent (bool verbose) const noexcept override
 Return a human-readable string representation of this message.
 
bool operator== (const XDR &other) const noexcept
 Compare two XDR messages for equality.
 
- Public Member Functions inherited from nmealib::nmea0183::Message0183
 Message0183 (const Message0183 &)=default
 Copy constructor.
 
Message0183operator= (const Message0183 &)=default
 Copy assignment operator.
 
 Message0183 (Message0183 &&) noexcept=default
 Move constructor.
 
Message0183operator= (Message0183 &&) noexcept=default
 Move assignment operator.
 
 ~Message0183 () override=default
 Destructor.
 
char getStartChar () const noexcept
 Returns the start character of the NMEA 0183 sentence.
 
std::string getTalker () const noexcept
 Returns the talker identifier extracted from the sentence.
 
std::string getSentenceType () const noexcept
 Returns the sentence type identifier extracted from the sentence.
 
std::string getPayload () const noexcept
 Returns the payload of the NMEA 0183 sentence.
 
std::string getChecksumStr () const
 Get the checksum string extracted from the raw sentence.
 
std::string getCalculatedChecksumStr () const noexcept
 Get the calculated checksum string for the sentence payload.
 
std::string serialize () const override
 Returns the wire-format representation of the NMEA 0183 sentence, that is, the raw information that was passed when the message was created.
 
bool operator== (const Message0183 &other) const noexcept
 Compares two Message0183 objects for equality based on their content and timestamp.
 
bool validate () const noexcept override
 Returns whether the message is valid or not.
 
- Public Member Functions inherited from nmealib::Message
 Message ()
 
 Message (std::string raw, Type type=Type::Unknown, TimePoint ts=std::chrono::system_clock::now()) noexcept
 
virtual ~Message ()
 
 Message (const Message &)=default
 
Messageoperator= (const Message &)=default
 
 Message (Message &&) noexcept=default
 
Messageoperator= (Message &&) noexcept=default
 
Type getType () const noexcept
 Returns the message type.
 
const std::string & getRawData () const noexcept
 Returns the raw, unmodified data string as received.
 
TimePoint getTimestamp () const noexcept
 Returns the timestamp associated with this message.
 
bool operator== (const Message &other) const noexcept
 Compares two Message objects for equality based on their content.
 

Friends

class Nmea0183Factory
 
class MessageRegistry
 

Additional Inherited Members

- Public Types inherited from nmealib::Message
enum class  Type { Unknown , NMEA0183 , NMEA2000 }
 Defines the type of NMEA message, allowing for differentiation between various standards. More...
 
using TimePoint = std::chrono::system_clock::time_point
 
- Static Public Member Functions inherited from nmealib::nmea0183::Message0183
static double convertNmeaCoordinateToDecimalDegrees (const std::string &nmeaCoordinate)
 Converts an NMEA coordinate in ddmm.mmmm / dddmm.mmmm format to decimal degrees.
 
- Static Public Member Functions inherited from nmealib::Message
static std::string typeToString (Type t)
 Converts a Message::Type enum value to its string representation.
 
- Protected Member Functions inherited from nmealib::nmea0183::Message0183
std::string toString (bool verbose) const noexcept
 Provides the common string representation for every NMEA 0183 message, which can be used by derived classes to implement their own getStringContent method.
 
- Protected Member Functions inherited from nmealib::Message
void setType (Type t) noexcept
 Sets the message type.
 
void setRaw (std::string r) noexcept
 Sets the raw data string.
 
void setTimestamp (TimePoint ts) noexcept
 Sets the message timestamp.
 
- Static Protected Member Functions inherited from nmealib::nmea0183::Message0183
static std::unique_ptr< Message0183create (const std::string &raw, TimePoint ts=std::chrono::system_clock::now())
 Protected factory method to create a Message0183 from a raw sentence string.
 
- Protected Attributes inherited from nmealib::nmea0183::Message0183
char startChar_
 
std::string talker_
 
std::string sentenceType_
 
std::string payload_
 
std::string checksumStr_
 
std::string calculatedChecksumStr_
 
- Protected Attributes inherited from nmealib::Message
std::string rawData_
 
Type type_ {Type::Unknown}
 
TimePoint timestamp_ {}
 

Detailed Description

Represents a parsed NMEA 0183 XDR (Transducer Measurement) sentence.

XDR carries one or more transducer measurement quadruplets:

$--XDR,a,x.x,a,c--c, ..... *hh<CR><LF>
Represents a parsed NMEA 0183 XDR (Transducer Measurement) sentence.
Definition xdr.h:43

Each quadruplet is composed of:

Definition at line 43 of file xdr.h.

Constructor & Destructor Documentation

◆ XDR() [1/3]

nmealib::nmea0183::XDR::XDR ( std::string  talkerId,
std::vector< TransducerMeasurement transducers 
)

Construct an XDR message from field values.

Parameters
talkerIdTwo-character talker identifier.
transducersSequence of one or more transducer measurements.

Definition at line 61 of file xdr.cpp.

◆ XDR() [2/3]

nmealib::nmea0183::XDR::XDR ( const XDR )
default

◆ XDR() [3/3]

nmealib::nmea0183::XDR::XDR ( XDR &&  )
defaultnoexcept

◆ ~XDR()

nmealib::nmea0183::XDR::~XDR ( )
overridedefault

Member Function Documentation

◆ clone()

std::unique_ptr< nmealib::Message > nmealib::nmea0183::XDR::clone ( ) const
overridevirtual

Create a polymorphic copy of this XDR message.

Returns
std::unique_ptr<nmealib::Message> A heap-allocated copy of this object.

Reimplemented from nmealib::nmea0183::Message0183.

Definition at line 65 of file xdr.cpp.

◆ getStringContent()

std::string nmealib::nmea0183::XDR::getStringContent ( bool  verbose) const
overridevirtualnoexcept

Return a human-readable string representation of this message.

Parameters
verboseWhen true, returns a multi-line detailed representation.
Returns
std::string Formatted string content.

Reimplemented from nmealib::nmea0183::Message0183.

Definition at line 69 of file xdr.cpp.

◆ getTransducer()

const XDR::TransducerMeasurement * nmealib::nmea0183::XDR::getTransducer ( std::size_t  index) const
noexcept

Get a transducer measurement by index.

Parameters
indexZero-based transducer index.
Returns
const TransducerMeasurement* Pointer to transducer data, or nullptr if out of range.

Definition at line 122 of file xdr.cpp.

◆ getTransducerCount()

std::size_t nmealib::nmea0183::XDR::getTransducerCount ( ) const
noexcept

Get the number of transducer measurements in this sentence.

Returns
std::size_t Number of transducer quadruplets.

Definition at line 118 of file xdr.cpp.

◆ getTransducers()

const std::vector< XDR::TransducerMeasurement > & nmealib::nmea0183::XDR::getTransducers ( ) const
noexcept

Get all transducer measurements in this sentence.

Returns
const std::vector<TransducerMeasurement>& Ordered transducer list.

Definition at line 114 of file xdr.cpp.

◆ operator=() [1/2]

XDR & nmealib::nmea0183::XDR::operator= ( const XDR )
default

◆ operator=() [2/2]

XDR & nmealib::nmea0183::XDR::operator= ( XDR &&  )
defaultnoexcept

◆ operator==()

bool nmealib::nmea0183::XDR::operator== ( const XDR other) const
noexcept

Compare two XDR messages for equality.

Equality delegates to Message0183::operator==.

Parameters
otherThe XDR message to compare with.
Returns
bool true if equal, false otherwise.

Definition at line 129 of file xdr.cpp.

Friends And Related Symbol Documentation

◆ MessageRegistry

friend class MessageRegistry
friend

Definition at line 133 of file xdr.h.

◆ Nmea0183Factory

friend class Nmea0183Factory
friend

Definition at line 132 of file xdr.h.


The documentation for this class was generated from the following files: