Renamed namespace NmeaParser.Nmea to NmeaParser.Messages

This commit is contained in:
Morten Nielsen 2020-01-19 18:06:15 -08:00
parent 61ae5ade1f
commit 9a32f41edf
36 changed files with 95 additions and 83 deletions

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Bearing - Origin to Destination

View file

@ -14,7 +14,7 @@
using System;
namespace NmeaParser.Nmea.Garmin
namespace NmeaParser.Messages.Garmin
{
/// <summary>
/// Recommended Minimum

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea.Garmin
namespace NmeaParser.Messages.Garmin
{
/// <summary>
/// Altitude Information

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Global Positioning System Fix Data

View file

@ -14,7 +14,7 @@
using System;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Geographic position, latitude / longitude.

View file

@ -16,7 +16,7 @@ using System;
using System.Globalization;
using System.Linq;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Fixes data for single or combined (GPS, GLONASS, possible future satellite systems, and systems combining these) satellite navigation systems

View file

@ -16,7 +16,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Global Positioning System DOP and active satellites

View file

@ -14,7 +14,7 @@
using System;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Pseudorange error statistics

View file

@ -16,7 +16,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// GNSS Satellites in view

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Laser Range Measurement

View file

@ -12,7 +12,7 @@
// * limitations under the License.
// ******************************************************************************
namespace NmeaParser.Nmea.LaserTech
namespace NmeaParser.Messages.LaserTech
{
/// <summary>
/// Laser Range

View file

@ -18,25 +18,34 @@ using System.Globalization;
using System.Linq;
using System.Reflection;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Nmea message attribute type used on concrete <see cref="NmeaMessage"/> implementations.
/// </summary>
/// <remarks>
/// The 5-character <see cref="NmeaType"/> indicates which message the class is meant to parse.
/// Set the first two characters to <c>--</c> to make the message talker-independent.
/// </remarks>
/// <seealso cref="NmeaMessage.RegisterAssembly(Assembly, bool)"/>
/// <seealso cref="NmeaMessage.RegisterNmeaMessage(TypeInfo, string, bool)"/>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public sealed class NmeaMessageTypeAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="NmeaMessageTypeAttribute"/> class.
/// </summary>
/// <param name="nmeaType">The type.</param>
/// <param name="nmeaType">The 5-character NMEA type name, for instance <c>GPRMC</c>, or <c>--RMC</c> to make it apply to all talkers.</param>
public NmeaMessageTypeAttribute(string nmeaType)
{
NmeaType = nmeaType;
}
/// <summary>
/// Gets or sets the NMEA message type.
/// Gets the NMEA message type name.
/// </summary>
/// <remarks>
/// If the type name starts with <c>--</c>, this message can apply to all talker types.
/// </remarks>
public string NmeaType { get; private set; }
}

View file

@ -16,7 +16,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Base class for easily creating message that are spread across multiple sentences

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Recommended minimum specific Loran-C Data

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Recommended minimum navigation information

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Recommended Minimum specific GNSS data

View file

@ -17,7 +17,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Routes

View file

@ -12,7 +12,7 @@
// * limitations under the License.
// ******************************************************************************
namespace NmeaParser.Nmea.Trimble
namespace NmeaParser.Messages.Trimble
{
/// <summary>
/// Laser Range Burden finder

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea.Trimble
namespace NmeaParser.Messages.Trimble
{
/// <summary>
/// Laser Range Tree Measurement

View file

@ -14,7 +14,7 @@
using System.Collections.Generic;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Represents an unknown message type

View file

@ -14,7 +14,7 @@
using System;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Course over ground and ground speed

View file

@ -15,7 +15,7 @@
using System;
using System.Globalization;
namespace NmeaParser.Nmea
namespace NmeaParser.Messages
{
/// <summary>
/// Date and time of fix

View file

@ -19,6 +19,7 @@ using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
using NmeaParser.Messages;
namespace NmeaParser
{
@ -177,7 +178,7 @@ namespace NmeaParser
{
try
{
var msg = NmeaParser.Nmea.NmeaMessage.Parse(p, _lastMultiMessage);
var msg = NmeaMessage.Parse(p, _lastMultiMessage);
if(msg is IMultiSentenceMessage multi)
{
if (!multi.IsComplete)
@ -193,7 +194,7 @@ namespace NmeaParser
catch { }
}
private void OnMessageReceived(Nmea.NmeaMessage msg)
private void OnMessageReceived(NmeaMessage msg)
{
if (msg == null)
return;
@ -272,7 +273,7 @@ namespace NmeaParser
/// </summary>
public sealed class NmeaMessageReceivedEventArgs : EventArgs
{
internal NmeaMessageReceivedEventArgs(Nmea.NmeaMessage message)
internal NmeaMessageReceivedEventArgs(NmeaMessage message)
{
Message = message;
}
@ -283,6 +284,6 @@ namespace NmeaParser
/// <value>
/// The nmea message.
/// </value>
public Nmea.NmeaMessage Message { get; }
public NmeaMessage Message { get; }
}
}

View file

@ -14,7 +14,7 @@
using System.Collections.Generic;
namespace NmeaParser.Nmea
namespace NmeaParser
{
internal static class TalkerHelper
{

View file

@ -8,7 +8,7 @@ using Android.Content.PM;
using System;
using System.Collections.Generic;
using System.Linq;
using NmeaParser.Nmea;
using NmeaParser.Messages;
namespace SampleApp.Droid
{
@ -156,7 +156,7 @@ namespace SampleApp.Droid
//Start();
}
Queue<NmeaParser.Nmea.NmeaMessage> messages = new Queue<NmeaParser.Nmea.NmeaMessage>(100);
Queue<NmeaParser.Messages.NmeaMessage> messages = new Queue<NmeaParser.Messages.NmeaMessage>(100);
private void Listener_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs e)
{
var message = e.Message;

View file

@ -1,4 +1,4 @@
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System;
using System.Collections.Generic;
using System.Linq;

View file

@ -1,4 +1,4 @@
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System;
using System.Collections.Generic;
using System.Linq;

View file

@ -1,4 +1,4 @@
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System;
using System.Collections.Generic;
using System.Linq;

View file

@ -1,4 +1,4 @@
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System;
using System.Collections.Generic;
using System.Linq;

View file

@ -93,20 +93,20 @@ namespace SampleApp.WinDesktop
output.Text = string.Join("\n", messages.ToArray());
output.Select(output.Text.Length - 1, 0); //scroll to bottom
if (args.Message is NmeaParser.Nmea.Gsv gpgsv)
if (args.Message is NmeaParser.Messages.Gsv gpgsv)
{
satView.GsvMessage = gpgsv;
}
else if (args.Message is NmeaParser.Nmea.Rmc)
gprmcView.Message = args.Message as NmeaParser.Nmea.Rmc;
else if (args.Message is NmeaParser.Nmea.Gga)
gpggaView.Message = args.Message as NmeaParser.Nmea.Gga;
else if (args.Message is NmeaParser.Nmea.Gsa)
gpgsaView.Message = args.Message as NmeaParser.Nmea.Gsa;
else if (args.Message is NmeaParser.Nmea.Gll)
gpgllView.Message = args.Message as NmeaParser.Nmea.Gll;
else if (args.Message is NmeaParser.Nmea.Garmin.Pgrme)
pgrmeView.Message = args.Message as NmeaParser.Nmea.Garmin.Pgrme;
else if (args.Message is NmeaParser.Messages.Rmc)
gprmcView.Message = args.Message as NmeaParser.Messages.Rmc;
else if (args.Message is NmeaParser.Messages.Gga)
gpggaView.Message = args.Message as NmeaParser.Messages.Gga;
else if (args.Message is NmeaParser.Messages.Gsa)
gpgsaView.Message = args.Message as NmeaParser.Messages.Gsa;
else if (args.Message is NmeaParser.Messages.Gll)
gpgllView.Message = args.Message as NmeaParser.Messages.Gll;
else if (args.Message is NmeaParser.Messages.Garmin.Pgrme)
pgrmeView.Message = args.Message as NmeaParser.Messages.Garmin.Pgrme;
else
{
var ctrl = MessagePanel.Children.OfType<UnknownMessageControl>().Where(c => c.Message.MessageType == args.Message.MessageType).FirstOrDefault();

View file

@ -1,4 +1,4 @@
using NmeaParser.Nmea.Garmin;
using NmeaParser.Messages.Garmin;
using System;
using System.Collections.Generic;
using System.Linq;

View file

@ -25,18 +25,18 @@ namespace SampleApp.WinDesktop
InitializeComponent();
}
public NmeaParser.Nmea.Gsv GsvMessage
public NmeaParser.Messages.Gsv GsvMessage
{
get { return (NmeaParser.Nmea.Gsv)GetValue(GsvMessageProperty); }
get { return (NmeaParser.Messages.Gsv)GetValue(GsvMessageProperty); }
set { SetValue(GsvMessageProperty, value); }
}
public static readonly DependencyProperty GsvMessageProperty =
DependencyProperty.Register(nameof(GsvMessage), typeof(NmeaParser.Nmea.Gsv), typeof(SatelliteSnr), new PropertyMetadata(null, OnGpgsvMessagePropertyChanged));
DependencyProperty.Register(nameof(GsvMessage), typeof(NmeaParser.Messages.Gsv), typeof(SatelliteSnr), new PropertyMetadata(null, OnGpgsvMessagePropertyChanged));
private static void OnGpgsvMessagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var gsv = e.NewValue as NmeaParser.Nmea.Gsv;
var gsv = e.NewValue as NmeaParser.Messages.Gsv;
if (gsv == null)
(d as SatelliteSnr).satellites.ItemsSource = null;
else

View file

@ -13,6 +13,8 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using NmeaParser;
using NmeaParser.Messages;
namespace SampleApp.WinDesktop
{
@ -26,18 +28,18 @@ namespace SampleApp.WinDesktop
InitializeComponent();
}
public NmeaParser.Nmea.Gsv GsvMessage
public Gsv GsvMessage
{
get { return (NmeaParser.Nmea.Gsv)GetValue(GsvMessageProperty); }
get { return (Gsv)GetValue(GsvMessageProperty); }
set { SetValue(GsvMessageProperty, value); }
}
public static readonly DependencyProperty GsvMessageProperty =
DependencyProperty.Register(nameof(GsvMessage), typeof(NmeaParser.Nmea.Gsv), typeof(SatelliteView), new PropertyMetadata(null, OnGsvMessagePropertyChanged));
DependencyProperty.Register(nameof(GsvMessage), typeof(Gsv), typeof(SatelliteView), new PropertyMetadata(null, OnGsvMessagePropertyChanged));
private static void OnGsvMessagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var gsv = e.NewValue as NmeaParser.Nmea.Gsv;
var gsv = e.NewValue as Gsv;
if (gsv == null)
(d as SatelliteView).satellites.ItemsSource = null;
else
@ -98,15 +100,15 @@ namespace SampleApp.WinDesktop
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is NmeaParser.Nmea.SatelliteVehicle sv)
if (value is SatelliteVehicle sv)
{
byte alpha = (byte)(sv.SignalToNoiseRatio <= 0 ? 80 : 255);
switch (sv.TalkerId)
{
case NmeaParser.Nmea.Talker.GlobalPositioningSystem: return Color.FromArgb(alpha, 255, 0, 0);
case NmeaParser.Nmea.Talker.GalileoPositioningSystem: return Color.FromArgb(alpha, 0, 255, 0);
case NmeaParser.Nmea.Talker.GlonassReceiver: return Color.FromArgb(255, 0, 0, alpha);
case NmeaParser.Nmea.Talker.GlobalNavigationSatelliteSystem: return Color.FromArgb(alpha, 0, 0, 0);
case Talker.GlobalPositioningSystem: return Color.FromArgb(alpha, 255, 0, 0);
case Talker.GalileoPositioningSystem: return Color.FromArgb(alpha, 0, 255, 0);
case Talker.GlonassReceiver: return Color.FromArgb(255, 0, 0, alpha);
case Talker.GlobalNavigationSatelliteSystem: return Color.FromArgb(alpha, 0, 0, 0);
default: return Colors.CornflowerBlue;
}
}

View file

@ -3,7 +3,7 @@ using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using NmeaParser.Nmea;
using NmeaParser.Messages;
namespace SampleApp.WinDesktop
{

View file

@ -1,5 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System;
using System.Collections.Generic;
using System.Linq;
@ -26,7 +26,7 @@ namespace NmeaParser.Tests
try
{
Assert.IsInstanceOfType(e.Message, typeof(Gsv));
var msg = (NmeaParser.Nmea.Gsv)e.Message;
var msg = (NmeaParser.Messages.Gsv)e.Message;
Assert.IsTrue(((IMultiSentenceMessage)e.Message).IsComplete);
Assert.AreEqual(9, msg.SatellitesInView);
Assert.AreEqual(9, msg.SVs.Count);
@ -61,9 +61,9 @@ $GAGSV,4,4,14,19,82,349,40,1,44,220,40,4,24,314,38*5F";
{
try
{
Assert.IsInstanceOfType(e.Message, typeof(NmeaParser.Nmea.Gsv));
Assert.IsInstanceOfType(e.Message, typeof(Gsv));
Assert.AreEqual(Talker.Multiple, e.Message.TalkerId);
var msg = (NmeaParser.Nmea.Gsv)e.Message;
var msg = (Gsv)e.Message;
Assert.AreEqual(Talker.GlobalPositioningSystem, msg.SVs[0].TalkerId);
Assert.AreEqual(Talker.GlobalPositioningSystem, msg.SVs[4].TalkerId);
Assert.AreEqual(Talker.GlonassReceiver, msg.SVs[8].TalkerId);

View file

@ -18,7 +18,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NmeaParser.Nmea;
using NmeaParser.Messages;
using System.Threading.Tasks;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
@ -58,7 +58,7 @@ namespace NmeaParser.Tests
byte checksum = (byte)Convert.ToInt32(line.Substring(idx + 1), 16);
Assert.AreEqual(checksum, msg.Checksum);
}
Assert.IsNotInstanceOfType(msg, typeof(Nmea.UnknownMessage), "Type " + msg.MessageType + " not supported");
Assert.IsNotInstanceOfType(msg, typeof(UnknownMessage), "Type " + msg.MessageType + " not supported");
}
}
}
@ -93,7 +93,7 @@ namespace NmeaParser.Tests
}
if (msg.MessageType == "PTNL" || msg.MessageType == "GNVTG" || msg.MessageType == "GNZDA")
continue; //TODO
Assert.IsNotInstanceOfType(msg, typeof(Nmea.UnknownMessage), "Type " + msg.MessageType + " not supported");
Assert.IsNotInstanceOfType(msg, typeof(UnknownMessage), "Type " + msg.MessageType + " not supported");
}
}
}
@ -193,7 +193,7 @@ namespace NmeaParser.Tests
Assert.AreEqual(new TimeSpan(23, 52, 36), gga.FixTime);
Assert.AreEqual(39.432465, gga.Latitude);
Assert.AreEqual(-119.7653516666666667, gga.Longitude, 0.0000000001);
Assert.AreEqual(NmeaParser.Nmea.Gga.FixQuality.GpsFix, gga.Quality);
Assert.AreEqual(Gga.FixQuality.GpsFix, gga.Quality);
Assert.AreEqual(10, gga.NumberOfSatellites);
Assert.AreEqual(.8, gga.Hdop);
Assert.AreEqual(1378, gga.Altitude);
@ -214,7 +214,7 @@ namespace NmeaParser.Tests
Assert.AreEqual(new TimeSpan(23, 10, 11), gga.FixTime);
Assert.AreEqual(34.057860634, gga.Latitude);
Assert.AreEqual(-117.19682109916667, gga.Longitude, 0.0000000001);
Assert.AreEqual(NmeaParser.Nmea.Gga.FixQuality.FloatRtk, gga.Quality);
Assert.AreEqual(Gga.FixQuality.FloatRtk, gga.Quality);
Assert.AreEqual(13, gga.NumberOfSatellites);
Assert.AreEqual(.9, gga.Hdop);
Assert.AreEqual(403.641, gga.Altitude);
@ -230,9 +230,9 @@ namespace NmeaParser.Tests
{
string input = "$PTNLA,HV,002.94,M,288.1,D,008.6,D,002.98,M*74";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Nmea.Trimble.Ptnla));
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Messages.Trimble.Ptnla));
Assert.AreEqual(Talker.ProprietaryCode, msg.TalkerId);
NmeaParser.Nmea.Trimble.Ptnla ptlna = (NmeaParser.Nmea.Trimble.Ptnla)msg;
NmeaParser.Messages.Trimble.Ptnla ptlna = (NmeaParser.Messages.Trimble.Ptnla)msg;
Assert.AreEqual(2.94, ptlna.HorizontalDistance);
Assert.AreEqual('M', ptlna.HorizontalDistanceUnits);
Assert.AreEqual(288.1, ptlna.HorizontalAngle);
@ -248,9 +248,9 @@ namespace NmeaParser.Tests
{
string input = "$PGRME,2.3,M,3.3,M,4.0,M*2B";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Nmea.Garmin.Pgrme));
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Messages.Garmin.Pgrme));
Assert.AreEqual(Talker.ProprietaryCode, msg.TalkerId);
NmeaParser.Nmea.Garmin.Pgrme rme = (NmeaParser.Nmea.Garmin.Pgrme)msg;
NmeaParser.Messages.Garmin.Pgrme rme = (NmeaParser.Messages.Garmin.Pgrme)msg;
Assert.AreEqual(2.3, rme.HorizontalError);
Assert.AreEqual("M", rme.HorizontalErrorUnits);
Assert.AreEqual(3.3, rme.VerticalError);
@ -686,11 +686,11 @@ namespace NmeaParser.Tests
{
string input = "$PGRMZ,,,*7E";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Nmea.Garmin.Pgrmz));
var rmz = (NmeaParser.Nmea.Garmin.Pgrmz)msg;
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Messages.Garmin.Pgrmz));
var rmz = (NmeaParser.Messages.Garmin.Pgrmz)msg;
Assert.AreEqual(double.NaN, rmz.Altitude, "Altitude");
Assert.AreEqual(NmeaParser.Nmea.Garmin.Pgrmz.AltitudeUnit.Unknown, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Nmea.Garmin.Pgrmz.PositionFixType.Unknown, rmz.FixType, "FixDimension");
Assert.AreEqual(NmeaParser.Messages.Garmin.Pgrmz.AltitudeUnit.Unknown, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Messages.Garmin.Pgrmz.PositionFixType.Unknown, rmz.FixType, "FixDimension");
}
[TestMethod]
@ -698,11 +698,11 @@ namespace NmeaParser.Tests
{
string input = "$PGRMZ,93,f,3*21";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Nmea.Garmin.Pgrmz));
var rmz = (NmeaParser.Nmea.Garmin.Pgrmz)msg;
Assert.IsInstanceOfType(msg, typeof(NmeaParser.Messages.Garmin.Pgrmz));
var rmz = (NmeaParser.Messages.Garmin.Pgrmz)msg;
Assert.AreEqual(93d, rmz.Altitude, "Altitude");
Assert.AreEqual(NmeaParser.Nmea.Garmin.Pgrmz.AltitudeUnit.Feet, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Nmea.Garmin.Pgrmz.PositionFixType.Fix3D, rmz.FixType, "FixDimension");
Assert.AreEqual(NmeaParser.Messages.Garmin.Pgrmz.AltitudeUnit.Feet, rmz.Unit, "Unit");
Assert.AreEqual(NmeaParser.Messages.Garmin.Pgrmz.PositionFixType.Fix3D, rmz.FixType, "FixDimension");
}
[TestMethod]
@ -846,7 +846,7 @@ namespace NmeaParser.Tests
Assert.AreEqual(8, cmsg.Values.Count);
}
[Nmea.NmeaMessageType("PTEST")]
[NmeaMessageType("PTEST")]
private class CustomMessage : NmeaMessage
{
public CustomMessage(string type, string[] parameters) : base(type, parameters)