nmealib 0.0.4
NMEA 0183/NMEA 2000 parsing library
Loading...
Searching...
No Matches
dbt.h
Go to the documentation of this file.
1#pragma once
2
3#include <nmealib/nmea0183.h>
4
5namespace nmealib {
6namespace nmea0183 {
7
15public:
22 explicit NotDBTException(const std::string& context, const std::string& details = "") :
23 NmeaException(context, "The sentence is not a DBT sentence", details) {}
24};
25
37class DBT : public Message0183 {
38public:
50 DBT(std::string talkerId,
51 double depthFeet,
52 char feetUnit,
53 double depthMeters,
54 char metersUnit,
55 double depthFathoms,
56 char fathomsUnit
57 );
58
59 DBT(const DBT&) = default;
60 DBT& operator=(const DBT&) = default;
61 DBT(DBT&&) noexcept = default;
62 DBT& operator=(DBT&&) noexcept = default;
63
64 ~DBT() override = default;
65
71 std::unique_ptr<nmealib::Message> clone() const override;
72
78 double getDepthFeet() const noexcept;
79
85 char getFeetUnit() const noexcept;
86
92 double getDepthMeters() const noexcept;
93
99 char getMetersUnit() const noexcept;
100
106 double getDepthFathoms() const noexcept;
107
113 char getFathomsUnit() const noexcept;
114
121 std::string getStringContent(bool verbose) const noexcept override;
122
131 bool operator==(const DBT& other) const noexcept;
132
133private:
134 double depthFeet_{};
135 char feetUnit_{};
136 double depthMeters_{};
137 char metersUnit_{};
138 double depthFathoms_{};
139 char fathomsUnit_{};
140
141 DBT() = delete;
142
143 DBT(Message0183 baseMessage,
144 double depthFeet,
145 char feetUnit,
146 double depthMeters,
147 char metersUnit,
148 double depthFathoms,
149 char fathomsUnit
150 ) noexcept;
151
152 static std::unique_ptr<DBT> create(std::unique_ptr<Message0183> baseMessage);
153 static std::string composeRaw(const std::string& talkerId,
154 double depthFeet,
155 char feetUnit,
156 double depthMeters,
157 char metersUnit,
158 double depthFathoms,
159 char fathomsUnit);
160
161 friend class Nmea0183Factory;
162 friend class MessageRegistry;
163};
164
165} // namespace nmea0183
166} // namespace nmealib
Defines a base class for NMEA messages, encapsulating common properties and behaviors.
Definition message.h:14
Base exception class for all NMEA library errors.
Represents a parsed NMEA 0183 DBT (Depth Below Transducer) sentence.
Definition dbt.h:37
char getMetersUnit() const noexcept
Get the meters unit indicator.
Definition dbt.cpp:152
DBT(std::string talkerId, double depthFeet, char feetUnit, double depthMeters, char metersUnit, double depthFathoms, char fathomsUnit)
Construct a DBT message from individual field values.
Definition dbt.cpp:77
std::unique_ptr< nmealib::Message > clone() const override
Create a polymorphic copy of this DBT message.
Definition dbt.cpp:98
std::string getStringContent(bool verbose) const noexcept override
Return a human-readable string representation of this message.
Definition dbt.cpp:102
char getFeetUnit() const noexcept
Get the feet unit indicator.
Definition dbt.cpp:144
DBT(DBT &&) noexcept=default
char getFathomsUnit() const noexcept
Get the fathoms unit indicator.
Definition dbt.cpp:160
double getDepthFeet() const noexcept
Get the depth in feet.
Definition dbt.cpp:140
double getDepthMeters() const noexcept
Get the depth in meters.
Definition dbt.cpp:148
double getDepthFathoms() const noexcept
Get the depth in fathoms.
Definition dbt.cpp:156
DBT(const DBT &)=default
DBT & operator=(const DBT &)=default
Represents an NMEA 0183 sentence.
Definition nmea0183.h:98
Registry for message type creators.
Factory for creating typed NMEA 0183 message objects from raw sentence strings.
Exception thrown when a sentence is not a valid DBT sentence.
Definition dbt.h:14
NotDBTException(const std::string &context, const std::string &details="")
Construct a NotDBTException with context and optional details.
Definition dbt.h:22