OSDN Git Service

MessageIdをRawデータから取得するように変更
[yubeshi/yubeshi.git] / Yubeshi / Ubx / NavTimeGps.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.Ubx\r
13 {\r
14     public class NavTimeGps : Packet\r
15     {\r
16         #region constructors\r
17 \r
18         public NavTimeGps(byte[] sentence, int length)\r
19             : base(sentence, length)\r
20         {\r
21         }\r
22 \r
23         #endregion\r
24 \r
25         #region properties\r
26 \r
27         public decimal TimeOfWeek\r
28         {\r
29             get\r
30             {\r
31                 uint tow = BitConverter.ToUInt32(Raw, 6 + 0);\r
32                 int ftow = BitConverter.ToInt32(Raw, 6 + 4);\r
33                 return tow * 1e-3m + ftow * 1e-9m;\r
34             }\r
35         }\r
36 \r
37         public int Week\r
38         {\r
39             get\r
40             {\r
41                 return BitConverter.ToInt16(Raw, 6 + 8);\r
42             }\r
43         }\r
44 \r
45         public int LeapSecond\r
46         {\r
47             get\r
48             {\r
49                 return (sbyte)(Raw[6 + 10]);\r
50             }\r
51         }\r
52 \r
53         public decimal Accuracy\r
54         {\r
55             get\r
56             {\r
57                 return BitConverter.ToUInt32(Raw, 6 + 12) * 1e-9m;\r
58             }\r
59         }\r
60 \r
61         #endregion\r
62 \r
63         #region public methods\r
64 \r
65         public static bool TryParse(byte[] sentence, out UnknownPacket packet)\r
66         {\r
67             return TryParse(sentence, out packet, \r
68                                             MessageID.NavTimeGps, 16, Build);\r
69         }\r
70 \r
71         #endregion\r
72 \r
73         #region private methods\r
74 \r
75         private static Packet Build(byte[] sentence, int length)\r
76         {\r
77             return new NavTimeGps(sentence, length);\r
78         }\r
79 \r
80         #endregion\r
81     }\r
82 }\r