nmealib 0.0.4
NMEA 0183/NMEA 2000 parsing library
Loading...
Searching...
No Matches
apb.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 NotAPBException(const std::string& context, const std::string& details = "") :
23 NmeaException(context, "The sentence is not an APB sentence", details) {}
24};
25
37class APB : public Message0183 {
38public:
58 APB(std::string talkerId,
59 char status1,
60 char status2,
61 double crossTrackErrorMagnitude,
62 char directionToSteer,
63 char crossTrackUnits,
64 char arrivalCircleStatus,
65 char perpendicularPassedAtWaypoint,
66 double bearingOriginToDestination,
67 char bearingOriginToDestinationType,
68 std::string destinationWaypointId,
69 double bearingPresentToDestination,
70 char bearingPresentToDestinationType,
71 double headingToSteerToDestinationWaypoint,
72 char headingToSteerToDestinationWaypointType
73 );
74
75 APB(const APB&) = default;
76 APB& operator=(const APB&) = default;
77 APB(APB&&) noexcept = default;
78 APB& operator=(APB&&) noexcept = default;
79
80 ~APB() override = default;
81
87 std::unique_ptr<nmealib::Message> clone() const override;
88
90 char getStatus1() const noexcept;
92 char getStatus2() const noexcept;
94 double getCrossTrackErrorMagnitude() const noexcept;
96 char getDirectionToSteer() const noexcept;
98 char getCrossTrackUnits() const noexcept;
100 char getArrivalCircleStatus() const noexcept;
102 char getPerpendicularPassedAtWaypoint() const noexcept;
104 double getBearingOriginToDestination() const noexcept;
106 char getBearingOriginToDestinationType() const noexcept;
108 std::string getDestinationWaypointId() const noexcept;
110 double getBearingPresentToDestination() const noexcept;
112 char getBearingPresentToDestinationType() const noexcept;
114 double getHeadingToSteerToDestinationWaypoint() const noexcept;
116 char getHeadingToSteerToDestinationWaypointType() const noexcept;
117
124 std::string getStringContent(bool verbose) const noexcept override;
125
134 bool operator==(const APB& other) const noexcept;
135
136private:
137 char status1_{};
138 char status2_{};
139 double crossTrackErrorMagnitude_{};
140 char directionToSteer_{};
141 char crossTrackUnits_{};
142 char arrivalCircleStatus_{};
143 char perpendicularPassedAtWaypoint_{};
144 double bearingOriginToDestination_{};
145 char bearingOriginToDestinationType_{};
146 std::string destinationWaypointId_{};
147 double bearingPresentToDestination_{};
148 char bearingPresentToDestinationType_{};
149 double headingToSteerToDestinationWaypoint_{};
150 char headingToSteerToDestinationWaypointType_{};
151
152 APB() = delete;
153
154 APB(Message0183 baseMessage,
155 char status1,
156 char status2,
157 double crossTrackErrorMagnitude,
158 char directionToSteer,
159 char crossTrackUnits,
160 char arrivalCircleStatus,
161 char perpendicularPassedAtWaypoint,
162 double bearingOriginToDestination,
163 char bearingOriginToDestinationType,
164 std::string destinationWaypointId,
165 double bearingPresentToDestination,
166 char bearingPresentToDestinationType,
167 double headingToSteerToDestinationWaypoint,
168 char headingToSteerToDestinationWaypointType
169 ) noexcept;
170
171 static std::unique_ptr<APB> create(std::unique_ptr<Message0183> baseMessage);
172 static std::string composeRaw(const std::string& talkerId,
173 char status1,
174 char status2,
175 double crossTrackErrorMagnitude,
176 char directionToSteer,
177 char crossTrackUnits,
178 char arrivalCircleStatus,
179 char perpendicularPassedAtWaypoint,
180 double bearingOriginToDestination,
181 char bearingOriginToDestinationType,
182 const std::string& destinationWaypointId,
183 double bearingPresentToDestination,
184 char bearingPresentToDestinationType,
185 double headingToSteerToDestinationWaypoint,
186 char headingToSteerToDestinationWaypointType);
187
188 friend class Nmea0183Factory;
189 friend class MessageRegistry;
190};
191
192} // namespace nmea0183
193} // 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 APB (Autopilot Sentence "B") sentence.
Definition apb.h:37
char getHeadingToSteerToDestinationWaypointType() const noexcept
Get heading type for heading-to-steer ('M' or 'T').
Definition apb.cpp:280
double getBearingOriginToDestination() const noexcept
Get bearing from origin to destination.
Definition apb.cpp:256
char getBearingPresentToDestinationType() const noexcept
Get bearing type for present-to-destination ('M' or 'T').
Definition apb.cpp:272
double getHeadingToSteerToDestinationWaypoint() const noexcept
Get heading to steer to destination waypoint.
Definition apb.cpp:276
APB(std::string talkerId, char status1, char status2, double crossTrackErrorMagnitude, char directionToSteer, char crossTrackUnits, char arrivalCircleStatus, char perpendicularPassedAtWaypoint, double bearingOriginToDestination, char bearingOriginToDestinationType, std::string destinationWaypointId, double bearingPresentToDestination, char bearingPresentToDestinationType, double headingToSteerToDestinationWaypoint, char headingToSteerToDestinationWaypointType)
Construct an APB message from individual field values.
Definition apb.cpp:110
char getStatus1() const noexcept
Get primary APB status flag.
Definition apb.cpp:228
char getCrossTrackUnits() const noexcept
Get cross-track units indicator.
Definition apb.cpp:244
double getCrossTrackErrorMagnitude() const noexcept
Get cross-track error magnitude in nautical miles.
Definition apb.cpp:236
APB(APB &&) noexcept=default
char getBearingOriginToDestinationType() const noexcept
Get bearing type for origin-to-destination ('M' or 'T').
Definition apb.cpp:260
char getArrivalCircleStatus() const noexcept
Get arrival circle status flag.
Definition apb.cpp:248
std::unique_ptr< nmealib::Message > clone() const override
Create a polymorphic copy of this APB message.
Definition apb.cpp:155
APB & operator=(const APB &)=default
char getPerpendicularPassedAtWaypoint() const noexcept
Get perpendicular-passed status flag.
Definition apb.cpp:252
double getBearingPresentToDestination() const noexcept
Get bearing from present position to destination.
Definition apb.cpp:268
std::string getStringContent(bool verbose) const noexcept override
Return a human-readable string representation of this message.
Definition apb.cpp:159
char getStatus2() const noexcept
Get secondary APB status flag.
Definition apb.cpp:232
std::string getDestinationWaypointId() const noexcept
Get destination waypoint identifier.
Definition apb.cpp:264
char getDirectionToSteer() const noexcept
Get steering direction indicator ('L' or 'R').
Definition apb.cpp:240
APB(const APB &)=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 APB sentence.
Definition apb.h:14
NotAPBException(const std::string &context, const std::string &details="")
Construct a NotAPBException with context and optional details.
Definition apb.h:22