+ #region fields\r
+ private static readonly byte[] header;\r
+ private const int elementNum = 8;\r
+\r
+ #endregion\r
+\r
+ #region constructors\r
+ \r
+ static GpGbs()\r
+ {\r
+ header = Encoding.ASCII.GetBytes("$GPGBS,");\r
+ }\r
+ \r
+ public GpGbs()\r
+ {\r
+ }\r
+\r
+ public GpGbs(byte[] sentence)\r
+ : this(sentence, GetElements(sentence, elementNum))\r
+ {\r
+ }\r
+\r
+ private GpGbs(byte[] sentence, Elements elements)\r
+ : base(sentence, elements.PacketLength)\r
+ {\r
+ string[] v = elements.Values;\r
+ Utc = ParseTime(v[0]);\r
+ LatitudeError = ParseDouble(v[1]);\r
+ LongitudeError = ParseDouble(v[2]);\r
+ AltitudeError = ParseDouble(v[3]);\r
+ FailedSatellite = ParseInt(v[4], -1);\r
+ ProbabilityOfMissedDetection = ParseDouble(v[5]);\r
+ Bias = ParseDouble(v[6]);\r
+ StandardDeviationOfBias = ParseDouble(v[7]);\r
+ CheckSum = elements.CheckSum;\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region properties\r
+ public TimeSpan Utc\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double LatitudeError\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double LongitudeError\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double AltitudeError\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public int FailedSatellite\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double ProbabilityOfMissedDetection\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double Bias\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
+ public double StandardDeviationOfBias\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+ #endregion\r
+\r
+ #region public method\r
+\r
+ public static bool TryParse(byte[] sentence, out UnknownPacket packet)\r
+ {\r
+ return TryParse(sentence, out packet, header, elementNum, Build);\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region private method\r
+\r
+ private static Packet Build(byte[] sentence, Elements elements)\r
+ {\r
+ return new GpGbs(sentence, elements);\r
+ }\r
+\r
+ #endregion\r