1 #ifndef __NMEA__PGRME__HPP__
2 #define __NMEA__PGRME__HPP__
4 #include <marnav/nmea/sentence.hpp>
5 #include <marnav/utils/optional.hpp>
11 MARNAV_NMEA_DECLARE_SENTENCE_PARSE_FUNC(pgrme
)
13 /// @brief PGRME - Garmin Estimated Error
18 /// $PGRME,hhh,M,vvv,M,ttt,M*hh<CR><LF>
23 /// 1. Estimated horizontal position error (HPE)
25 /// 3. Estimated vertical position error (VPE)
27 /// 5. Overall spherical equivalent position error
31 /// Example: <tt>$PGRME,15.0,M,45.0,M,25.0,M*22</tt>
33 class pgrme
: public sentence
35 MARNAV_NMEA_SENTENCE_FRIENDS(pgrme
)
38 constexpr static const sentence_id ID
= sentence_id::PGRME
;
39 constexpr static const char * TAG
= "PGRME";
44 pgrme(const pgrme
&) = default;
45 pgrme
& operator=(const pgrme
&) = default;
49 const std::string
& talker
, fields::const_iterator first
, fields::const_iterator last
);
50 virtual std::vector
<std::string
> get_data() const override
;
53 utils::optional
<double> horizontal_position_error
;
54 unit::distance horizontal_position_error_unit
= unit::distance::meter
;
55 utils::optional
<double> vertical_position_error
;
56 unit::distance vertical_position_error_unit
= unit::distance::meter
;
57 utils::optional
<double> overall_spherical_equiv_position_error
;
58 unit::distance overall_spherical_equiv_position_error_unit
= unit::distance::meter
;
61 NMEA_GETTER(horizontal_position_error
)
62 NMEA_GETTER(horizontal_position_error_unit
)
63 NMEA_GETTER(vertical_position_error
)
64 NMEA_GETTER(vertical_position_error_unit
)
65 NMEA_GETTER(overall_spherical_equiv_position_error
)
66 NMEA_GETTER(overall_spherical_equiv_position_error_unit
)
68 void set_horizontal_position_error(double t
) noexcept
{ horizontal_position_error
= t
; }
69 void set_vertical_position_error(double t
) noexcept
{ vertical_position_error
= t
; }
70 void set_overall_spherical_equiv_position_error(double t
) noexcept
72 overall_spherical_equiv_position_error
= t
;