1 #ifndef __NMEA__GST__HPP__
2 #define __NMEA__GST__HPP__
4 #include <marnav/nmea/sentence.hpp>
5 #include <marnav/nmea/time.hpp>
6 #include <marnav/utils/optional.hpp>
12 MARNAV_NMEA_DECLARE_SENTENCE_PARSE_FUNC(gst
)
14 /// @brief GST - GPS Pseudorange Noise Statistics
19 /// $--GST,hhmmss.ss,x,x,x,x,x,x,x*hh<CR><LF>
23 /// 1. TC time of associated GGA fix
24 /// 2. Total RMS standard deviation of ranges inputs to the navigation solution
25 /// 3. Standard deviation (meters) of semi-major axis of error ellipse
26 /// 4. Standard deviation (meters) of semi-minor axis of error ellipse
27 /// 5. Orientation of semi-major axis of error ellipse (true north degrees)
28 /// 6. Standard deviation (meters) of latitude error
29 /// 7. Standard deviation (meters) of longitude error
30 /// 8. Standard deviation (meters) of altitude error
32 class gst
: public sentence
34 MARNAV_NMEA_SENTENCE_FRIENDS(gst
)
37 constexpr static const sentence_id ID
= sentence_id::GST
;
38 constexpr static const char * TAG
= "GST";
43 gst(const gst
&) = default;
44 gst
& operator=(const gst
&) = default;
47 gst(const std::string
& talker
, fields::const_iterator first
, fields::const_iterator last
);
48 virtual std::vector
<std::string
> get_data() const override
;
52 double total_rms
= 0.0;
53 double dev_semi_major
= 0.0;
54 double dev_semi_minor
= 0.0;
55 double orientation
= 0.0;
62 NMEA_GETTER(total_rms
)
63 NMEA_GETTER(dev_semi_major
)
64 NMEA_GETTER(dev_semi_minor
)
65 NMEA_GETTER(orientation
)
70 void set_time_utc(const nmea::time
& t
) noexcept
{ time_utc
= t
; }
71 void set_total_rms(double t
) noexcept
{ total_rms
= t
; }
72 void set_dev_semi_major(double t
) noexcept
{ dev_semi_major
= t
; }
73 void set_dev_semi_minor(double t
) noexcept
{ dev_semi_minor
= t
; }
74 void set_orientation(double t
) noexcept
{ orientation
= t
; }
75 void set_dev_lat(double t
) noexcept
{ dev_lat
= t
; }
76 void set_dev_lon(double t
) noexcept
{ dev_lon
= t
; }
77 void set_dev_alt(double t
) noexcept
{ dev_alt
= t
; }