OSDN Git Service

1d9b2818d83e48e5149a7ddaca53090c24575eed
[yubeshi/yubeshi.git] / Yubeshi / Nmea / GpGbs.cs
1 /*\r
2  *      Yubeshi GPS Parser\r
3  *\r
4  *      This software is distributed under a zlib-style license.\r
5  *      See license.txt for more information.\r
6  */\r
7 \r
8 using System;\r
9 using System.Collections.Generic;\r
10 using System.Text;\r
11 \r
12 namespace Yubeshi.Nmea\r
13 {\r
14     /// <summary>\r
15     ///     GNSS Satellite Fault Detection\r
16     /// </summary>\r
17     public class GpGbs : Packet\r
18     {\r
19         #region fields\r
20         private static readonly byte[] header;\r
21         private const int elementNum = 8;\r
22 \r
23         #endregion\r
24 \r
25         #region constructors\r
26         \r
27         static GpGbs()\r
28         {\r
29             header = Encoding.ASCII.GetBytes("$GPGBS,");\r
30         }\r
31         \r
32         public GpGbs()\r
33         {\r
34         }\r
35 \r
36         public GpGbs(byte[] sentence)\r
37             : this(sentence, GetElements(sentence, elementNum))\r
38         {\r
39         }\r
40 \r
41         private GpGbs(byte[] sentence, Elements elements)\r
42             : base(sentence, elements.PacketLength)\r
43         {\r
44             string[] v = elements.Values;\r
45             Utc = ParseTime(v[0]);\r
46             LatitudeError = ParseDouble(v[1]);\r
47             LongitudeError = ParseDouble(v[2]);\r
48             AltitudeError = ParseDouble(v[3]);\r
49             FailedSatellite = ParseInt(v[4], -1);\r
50             ProbabilityOfMissedDetection = ParseDouble(v[5]);\r
51             Bias = ParseDouble(v[6]);\r
52             StandardDeviationOfBias = ParseDouble(v[7]);\r
53             CheckSum = elements.CheckSum;\r
54         }\r
55 \r
56         #endregion\r
57 \r
58         #region properties\r
59         public TimeSpan Utc\r
60         {\r
61             get;\r
62             private set;\r
63         }\r
64 \r
65         public double LatitudeError\r
66         {\r
67             get;\r
68             private set;\r
69         }\r
70 \r
71         public double LongitudeError\r
72         {\r
73             get;\r
74             private set;\r
75         }\r
76 \r
77         public double AltitudeError\r
78         {\r
79             get;\r
80             private set;\r
81         }\r
82 \r
83         public int FailedSatellite\r
84         {\r
85             get;\r
86             private set;\r
87         }\r
88 \r
89         public double ProbabilityOfMissedDetection\r
90         {\r
91             get;\r
92             private set;\r
93         }\r
94 \r
95         public double Bias\r
96         {\r
97             get;\r
98             private set;\r
99         }\r
100 \r
101         public double StandardDeviationOfBias\r
102         {\r
103             get;\r
104             private set;\r
105         }\r
106         #endregion\r
107 \r
108         #region public method\r
109 \r
110         public static bool TryParse(byte[] sentence, out UnknownPacket packet)\r
111         {\r
112             return TryParse(sentence, out packet, header, elementNum, Build);\r
113         }\r
114 \r
115         #endregion\r
116 \r
117         #region private method\r
118 \r
119         private static Packet Build(byte[] sentence, Elements elements)\r
120         {\r
121             return new GpGbs(sentence, elements);\r
122         }\r
123 \r
124         #endregion\r
125     }\r
126 }