From 47d419864fbc8657c43acb2ae48856e68f03d114 Mon Sep 17 00:00:00 2001 From: Morten Nielsen <1378165+dotMorten@users.noreply.github.com> Date: Mon, 31 Aug 2020 22:22:27 -0700 Subject: [PATCH 1/2] Detect GN support per-message instead (#79) * Simplify Android device lookup * Detect GN support per-message instead. * add length check --- src/NmeaParser/BluetoothDevice.Android.cs | 2 +- src/NmeaParser/Gnss/GnssMonitor.cs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/NmeaParser/BluetoothDevice.Android.cs b/src/NmeaParser/BluetoothDevice.Android.cs index 4c87ba3..cbc2be9 100644 --- a/src/NmeaParser/BluetoothDevice.Android.cs +++ b/src/NmeaParser/BluetoothDevice.Android.cs @@ -54,7 +54,7 @@ namespace NmeaParser var adapter = Android.Bluetooth.BluetoothAdapter.DefaultAdapter; if (adapter != null && adapter.IsEnabled) { - foreach (var b in adapter.BondedDevices.Where(d => d.GetUuids().Where(t => t.Uuid != null && t.Uuid.ToString()!.Equals("00001101-0000-1000-8000-00805F9B34FB", StringComparison.InvariantCultureIgnoreCase)).Any())) + foreach (var b in adapter.BondedDevices.Where(d => d.GetUuids().Any(t => SERIAL_UUID.CompareTo(t.Uuid) == 0))) yield return b; } } diff --git a/src/NmeaParser/Gnss/GnssMonitor.cs b/src/NmeaParser/Gnss/GnssMonitor.cs index c58d1cf..b92fe2d 100644 --- a/src/NmeaParser/Gnss/GnssMonitor.cs +++ b/src/NmeaParser/Gnss/GnssMonitor.cs @@ -26,7 +26,6 @@ namespace NmeaParser.Gnss /// public class GnssMonitor : INotifyPropertyChanged { - private bool m_supportGNMessages; // If device detect GN* messages, ignore all other Talker ID private bool m_supportGGaMessages; //If device support GGA, ignore RMC for location private Dictionary m_allMessages { get; } = new Dictionary(); private object m_lock = new object(); @@ -81,10 +80,12 @@ namespace NmeaParser.Gnss m_allMessages[message.MessageType] = message; } properties.Add(nameof(AllMessages)); - if (message.TalkerId == NmeaParser.Talker.GlobalNavigationSatelliteSystem) - m_supportGNMessages = true; // Support for GN* messages detected - else if (m_supportGNMessages && message.TalkerId != NmeaParser.Talker.GlobalNavigationSatelliteSystem && !(message is Gsv)) - return; // If device supports combined GN* messages, ignore non-GN messages, except for Gsv + if(message.TalkerId != NmeaParser.Talker.GlobalNavigationSatelliteSystem && !(message is Gsv) && message.MessageType.Length > 2) + { + // If device supports combined GN*** messages, ignore non-GN messages, except for Gsv + if (m_allMessages.ContainsKey("GN" + message.MessageType.Substring(2))) + return; + } if (message is NmeaParser.Messages.Garmin.Pgrme rme) { From 11cb0d72be8b980c84eb44d6824851afb1420ddd Mon Sep 17 00:00:00 2001 From: Morten Nielsen <1378165+dotMorten@users.noreply.github.com> Date: Mon, 31 Aug 2020 22:23:27 -0700 Subject: [PATCH 2/2] Update version number --- src/NmeaParser/NmeaParser.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NmeaParser/NmeaParser.csproj b/src/NmeaParser/NmeaParser.csproj index ec372b1..f2fae53 100644 --- a/src/NmeaParser/NmeaParser.csproj +++ b/src/NmeaParser/NmeaParser.csproj @@ -11,7 +11,7 @@ An NMEA stream parser for serial port, bluetooth and file-based nmea simulation. NMEA GPS GNSS Serialport Bluetooth Navigation NTRIP RTCM Galileo GLONASS BeiDou Garmin Trimble SharpGIS.NmeaParser - 2.1 + 2.2 NMEA Parser Apache-2.0 https://dotmorten.github.io/NmeaParser/ @@ -35,7 +35,7 @@ All messages now have a unique timestamp useful to expire older messages.enable logo.png - 2.1.0.0 + 2.2.0.0