Updated PGRMZ data to match Garmin spec

This commit is contained in:
dotMorten 2014-11-27 10:04:16 -08:00
parent 85066e3a12
commit 4a13161d4f
2 changed files with 17 additions and 10 deletions

View file

@ -47,20 +47,24 @@ namespace NmeaParser.Nmea.Gps.Garmin
/// <summary>
/// Position Fix Dimension
/// </summary>
public enum PositionFixDimension : int
public enum PositionFixType : int
{
/// <summary>
/// Unknown
/// </summary>
Unknown = 0,
/// <summary>
/// No fix
/// </summary>
None = 0,
NoFix = 1,
/// <summary>
/// 2D Fix
/// </summary>
UserAltitude = 2,
Fix2D = 2,
/// <summary>
/// 3D Fix
/// </summary>
GpsAltitude = 3
Fix3D = 3
}
/// <summary>
/// Called when the message is being loaded.
@ -78,11 +82,14 @@ namespace NmeaParser.Nmea.Gps.Garmin
Unit = message[1] == "f" ? AltitudeUnit.Feet : AltitudeUnit.Unknown;
int dim = -1;
if (message[2].Length == 1 && int.TryParse(message[2], out dim))
FixDimension = (PositionFixDimension)dim;
{
if (dim >= (int)PositionFixType.NoFix && dim <= (int)PositionFixType.Fix3D)
FixType = (PositionFixType)dim;
}
}
/// <summary>
/// Estimated horizontal position error in meters (HPE)
/// Current altitude
/// </summary>
public double Altitude { get; private set; }
@ -92,8 +99,8 @@ namespace NmeaParser.Nmea.Gps.Garmin
public AltitudeUnit Unit { get; private set; }
/// <summary>
/// Estimated vertical position error in meters (VPE)
/// Fix type
/// </summary>
public PositionFixDimension FixDimension { get; private set; }
public PositionFixType FixType { get; private set; }
}
}

View file

@ -318,7 +318,7 @@ namespace NmeaParser.Tests
var rmz = (NmeaParser.Nmea.Gps.Garmin.Pgrmz)msg;
Assert.AreEqual(double.NaN, rmz.Altitude, "Altitude");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.AltitudeUnit.Unknown, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.PositionFixDimension.None, rmz.FixDimension, "FixDimension");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.PositionFixType.Unknown, rmz.FixType, "FixDimension");
}
[TestMethod]
@ -330,7 +330,7 @@ namespace NmeaParser.Tests
var rmz = (NmeaParser.Nmea.Gps.Garmin.Pgrmz)msg;
Assert.AreEqual(93d, rmz.Altitude, "Altitude");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.AltitudeUnit.Feet, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.PositionFixDimension.GpsAltitude, rmz.FixDimension, "FixDimension");
Assert.AreEqual(NmeaParser.Nmea.Gps.Garmin.Pgrmz.PositionFixType.Fix3D, rmz.FixType, "FixDimension");
}
[TestMethod]