diff --git a/src/NmeaParser.Shared/Nmea/Gps/GPGGA.cs b/src/NmeaParser.Shared/Nmea/Gps/GPGGA.cs index 8fdade3..f355f1b 100644 --- a/src/NmeaParser.Shared/Nmea/Gps/GPGGA.cs +++ b/src/NmeaParser.Shared/Nmea/Gps/GPGGA.cs @@ -67,6 +67,7 @@ namespace NmeaParser.Nmea.Gps { if (message == null || message.Length < 14) throw new ArgumentException("Invalid GPGGA", "message"); + FixTime = StringToTimeSpan(message[0]); Latitude = NmeaMessage.StringToLatitude(message[1], message[2]); Longitude = NmeaMessage.StringToLongitude(message[3], message[4]); Quality = (FixQuality)int.Parse(message[5], CultureInfo.InvariantCulture); @@ -75,14 +76,23 @@ namespace NmeaParser.Nmea.Gps Altitude = NmeaMessage.StringToDouble(message[8]); AltitudeUnits = message[9]; HeightOfGeoid = NmeaMessage.StringToDouble(message[10]); - HeightOfGeoidUnits = message[11]; - TimeSinceLastDgpsUpdate = StringToTimeSpan(message[0]); + HeightOfGeoidUnits = message[11]; + var timeInSeconds = StringToDouble(message[12]); + if (!double.IsNaN(timeInSeconds)) + TimeSinceLastDgpsUpdate = TimeSpan.FromSeconds(timeInSeconds); + else + TimeSinceLastDgpsUpdate = TimeSpan.MaxValue; if (message[13].Length > 0) DgpsStationId = int.Parse(message[13], CultureInfo.InvariantCulture); else DgpsStationId = -1; } + /// + /// Time of day fix was taken + /// + public TimeSpan FixTime { get; private set; } + /// /// Latitude ///