OSDN Git Service

Ubxパケットの部分的実装
[yubeshi/yubeshi.git] / Yubeshi / Nmea / GpDtm.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     ///     Datum Reference\r
16     /// </summary>\r
17     public class GpDtm : Packet\r
18     {\r
19         #region type definitions\r
20         public enum Code\r
21         { \r
22             Unknown = 0,\r
23             Wgs84 = 84,\r
24             Wgs72 = 72,\r
25             UserDefined = 999,\r
26         }\r
27 \r
28         #endregion\r
29 \r
30         #region fields\r
31         private static Dictionary<string, Code> codes;\r
32         private static readonly byte[] header;\r
33         private const int elementNum = 8;\r
34 \r
35         #endregion\r
36 \r
37         #region constructors\r
38         \r
39         static GpDtm()\r
40         {\r
41             header = Encoding.ASCII.GetBytes("$GPDTM,");\r
42             codes = new Dictionary<string,Code>();\r
43             codes["W84"] = Code.Wgs84;\r
44             codes["W72"] = Code.Wgs72;\r
45             codes["999"] = Code.UserDefined;\r
46         }\r
47         \r
48         public GpDtm()\r
49         {\r
50         }\r
51 \r
52         public GpDtm(byte[] sentence)\r
53             : this(sentence, GetElements(sentence, elementNum))\r
54         {\r
55         }\r
56 \r
57         private GpDtm(byte[] sentence, Elements elements)\r
58         { \r
59 \r
60         }\r
61 \r
62         #endregion\r
63 \r
64         #region properties\r
65         public Code LocalDatumCode\r
66         {\r
67             get;\r
68             private set;\r
69         }\r
70 \r
71         public Coordinate Offset\r
72         {\r
73             get;\r
74             private set;\r
75         }\r
76 \r
77         public Code ReferenceDetumCode\r
78         {\r
79             get;\r
80             private set;\r
81         }\r
82         #endregion\r
83 \r
84         #region public method\r
85 \r
86         public static bool TryParse(byte[] sentence, out Packet packet)\r
87         {\r
88             return TryParse(sentence, out packet, header, elementNum, Build);\r
89         }\r
90 \r
91         #endregion\r
92 \r
93         #region private method\r
94 \r
95         private static Packet Build(byte[] sentence, Elements elements)\r
96         {\r
97             return new GpDtm(sentence, elements);\r
98         }\r
99 \r
100         #endregion\r
101     }\r
102 }\r