Added satellite system property (GPS/Glonass/Waas)

This commit is contained in:
mort5161 2014-11-14 15:20:51 -08:00
parent a8cb9c3607
commit 8f692a4aab
2 changed files with 46 additions and 3 deletions

View file

@ -105,5 +105,45 @@ namespace NmeaParser.Nmea.Gps
/// Signal-to-Noise ratio, 0-99 dB (-1 when not tracking)
/// </summary>
public int SignalToNoiseRatio { get; private set; }
/// <summary>
/// Satellite system
/// </summary>
public SatelliteSystem System
{
get
{
if (PrnNumber >= 1 && PrnNumber <= 32)
return SatelliteSystem.Gps;
if (PrnNumber >= 33 && PrnNumber <= 64)
return SatelliteSystem.Waas;
if (PrnNumber >= 65 && PrnNumber <= 96)
return SatelliteSystem.Glonass;
return SatelliteSystem.Unknown;
}
}
}
/// <summary>
/// Satellite system
/// </summary>
public enum SatelliteSystem
{
/// <summary>
/// Unknown
/// </summary>
Unknown,
/// <summary>
/// GPS - Global Positioning System (NAVSTAR)
/// </summary>
Gps,
/// <summary>
/// WAAS - Wide Area Augmentation System
/// </summary>
Waas,
/// <summary>
/// GLONASS - Globalnaya navigatsionnaya sputnikovaya sistema
/// </summary>
Glonass
}
}

View file

@ -196,7 +196,7 @@ namespace NmeaParser.Tests
[TestMethod]
public void TestGpgsv()
{
string input = "$GPGSV,3,3,11,22,42,067,42,24,14,311,43,27,05,244,00,,,,*4D";
string input = "$GPGSV,3,3,11,22,42,067,42,75,14,311,43,50,05,244,00,,,,*49";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(Gpgsv));
Gpgsv gsv = (Gpgsv)msg;
@ -210,18 +210,21 @@ namespace NmeaParser.Tests
Assert.AreEqual(42, sv.Elevation);
Assert.AreEqual(67, sv.Azimuth);
Assert.AreEqual(42, sv.SignalToNoiseRatio);
Assert.AreEqual(SatelliteSystem.Gps, sv.System);
sv = gsv.SVs[1];
Assert.AreEqual(24, sv.PrnNumber);
Assert.AreEqual(75, sv.PrnNumber);
Assert.AreEqual(14, sv.Elevation);
Assert.AreEqual(311, sv.Azimuth);
Assert.AreEqual(43, sv.SignalToNoiseRatio);
Assert.AreEqual(SatelliteSystem.Glonass, sv.System);
sv = gsv.SVs[2];
Assert.AreEqual(27, sv.PrnNumber);
Assert.AreEqual(50, sv.PrnNumber);
Assert.AreEqual(5, sv.Elevation);
Assert.AreEqual(244, sv.Azimuth);
Assert.AreEqual(00, sv.SignalToNoiseRatio);
Assert.AreEqual(SatelliteSystem.Waas, sv.System);
}
[TestMethod]