diff --git a/src/NmeaParser.Shared/Nmea/Gnss/Gngst.cs b/src/NmeaParser.Shared/Nmea/Gnss/Gngst.cs new file mode 100644 index 0000000..953e016 --- /dev/null +++ b/src/NmeaParser.Shared/Nmea/Gnss/Gngst.cs @@ -0,0 +1,80 @@ +using System; + +namespace NmeaParser.Nmea.Gnss +{ + /// + /// Position error statistics + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Gngst")] + [NmeaMessageType("GNGST")] + public class Gngst : NmeaMessage + { + /// + /// Called when the message is being loaded. + /// + /// The NMEA message values. + protected override void OnLoadMessage(string[] message) + { + if (message == null || message.Length < 8) + throw new ArgumentException("Invalid GNGST", "message"); + FixTime = StringToTimeSpan(message[0]); + Rms = NmeaMessage.StringToDouble(message[1]); + SemiMajorError = NmeaMessage.StringToDouble(message[2]); + SemiMinorError = NmeaMessage.StringToDouble(message[3]); + ErrorOrientation = NmeaMessage.StringToDouble(message[4]); + SigmaLatitudeError = NmeaMessage.StringToDouble(message[5]); + SigmaLongitudeError = NmeaMessage.StringToDouble(message[6]); + SigmaHeightError = NmeaMessage.StringToDouble(message[7]); + } + + /// + /// UTC of position fix + /// + public TimeSpan FixTime { get; private set; } + + /// + /// RMS value of the pseudorange residuals; includes carrier phase residuals during periods of RTK (float) and RTK (fixed) processing + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Rms")] + public double Rms { get; private set; } + + /// + /// Error ellipse semi-major axis 1 sigma error, in meters + /// + public double SemiMajorError { get; private set; } + + /// + /// Error ellipse semi-minor axis 1 sigma error, in meters + /// + public double SemiMinorError { get; private set; } + + /// + /// Error ellipse orientation, degrees from true north + /// + public double ErrorOrientation { get; private set; } + + /// + /// Latitude 1 sigma error, in meters + /// + /// + /// The error expressed as one standard deviation. + /// + public double SigmaLatitudeError { get; private set; } + + /// + /// Longitude 1 sigma error, in meters + /// + /// + /// The error expressed as one standard deviation. + /// + public double SigmaLongitudeError { get; private set; } + + /// + /// Height 1 sigma error, in meters + /// + /// + /// The error expressed as one standard deviation. + /// + public double SigmaHeightError { get; private set; } + } +} diff --git a/src/NmeaParser.Shared/NmeaParser.Shared.projitems b/src/NmeaParser.Shared/NmeaParser.Shared.projitems index 8cc777b..745fabb 100644 --- a/src/NmeaParser.Shared/NmeaParser.Shared.projitems +++ b/src/NmeaParser.Shared/NmeaParser.Shared.projitems @@ -13,6 +13,7 @@ +