private void HandleGga(GgaStandardGpsMessage message, DateTime systemReceivedUtcDateTime) { LatestPosition = new PositionData( AdjustSystemUtc(systemReceivedUtcDateTime), message.Latitude, message.Longitude, message.FixStatus, message.NumberOfSatellites, message.HorizontalDilutioOfPrecision, message.Altitude, message.GeoIdSeparation, message.DgpsAge, message.DgpsStateId); if (LatestPosition.Latitude.HasValue && LatestPosition.Longitude.HasValue && LatestPosition.Altitude.HasValue) { _currentPosition = new SimplePosition( LatestPosition.Latitude.Value, LatestPosition.Longitude.Value, LatestPosition.Altitude.Value); } OnPositionData?.Invoke(this, new PositionDataEventArgs(LatestPosition)); }
public static bool TryConvertToStandardGpsMessage(GpsMessage message, out StandardGpsMessage standardGpsMessage) { switch (message.MessageId) { case "GPRMC": standardGpsMessage = new RmcStandardGpsMessage(message); return(true); case "GPVTG": standardGpsMessage = new VtgStandardGpsMessage(message); return(true); case "GPGGA": standardGpsMessage = new GgaStandardGpsMessage(message); return(true); case "GPGSA": standardGpsMessage = new GsaStandardGpsMessage(message); return(true); case "GPGSV": standardGpsMessage = new GsvStandardGpsMessage(message); return(true); case "GPGLL": standardGpsMessage = new GllStandardGpsMessage(message); return(true); case "GPTXT": standardGpsMessage = new TxtStandardGpsMessage(message); return(true); } standardGpsMessage = null; return(false); }