From 8f692a4aab5cf5b08d7a0186f8d2e5f44cc7f7d7 Mon Sep 17 00:00:00 2001 From: mort5161 Date: Fri, 14 Nov 2014 15:20:51 -0800 Subject: [PATCH] Added satellite system property (GPS/Glonass/Waas) --- src/NmeaParser.Shared/Nmea/Gps/GPGSV.cs | 40 +++++++++++++++++++++++++ src/NmeaParser.Tests/NmeaMessages.cs | 9 ++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/NmeaParser.Shared/Nmea/Gps/GPGSV.cs b/src/NmeaParser.Shared/Nmea/Gps/GPGSV.cs index 2deec37..e592a07 100644 --- a/src/NmeaParser.Shared/Nmea/Gps/GPGSV.cs +++ b/src/NmeaParser.Shared/Nmea/Gps/GPGSV.cs @@ -105,5 +105,45 @@ namespace NmeaParser.Nmea.Gps /// Signal-to-Noise ratio, 0-99 dB (-1 when not tracking) /// public int SignalToNoiseRatio { get; private set; } + + /// + /// Satellite system + /// + 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; + } + } + } + + /// + /// Satellite system + /// + public enum SatelliteSystem + { + /// + /// Unknown + /// + Unknown, + /// + /// GPS - Global Positioning System (NAVSTAR) + /// + Gps, + /// + /// WAAS - Wide Area Augmentation System + /// + Waas, + /// + /// GLONASS - Globalnaya navigatsionnaya sputnikovaya sistema + /// + Glonass } } diff --git a/src/NmeaParser.Tests/NmeaMessages.cs b/src/NmeaParser.Tests/NmeaMessages.cs index e30445b..4f904f1 100644 --- a/src/NmeaParser.Tests/NmeaMessages.cs +++ b/src/NmeaParser.Tests/NmeaMessages.cs @@ -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]