OSDN Git Service

WeekとTimeOfWeekプロパティを持つパケットにGpsTimeプロパティ追加
[yubeshi/yubeshi.git] / Yubeshi / Ubx / NavTimeUtc.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 NavTimeUtc : Packet\r
15     {\r
16         #region constructors\r
17 \r
18         public NavTimeUtc(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 + 8);\r
33                 return tow * 1e-3m + ftow * 1e-9m;\r
34             }\r
35         }\r
36 \r
37         public decimal Accuracy\r
38         {\r
39             get \r
40             {\r
41                 return BitConverter.ToUInt32(Raw, 6 + 4) * 1e-9m;\r
42             }\r
43         }\r
44 \r
45         public DateTime Utc\r
46         {\r
47             get\r
48             { \r
49                 int y = BitConverter.ToUInt16(Raw, 6 + 12);\r
50                 int m = Raw[6 + 14];\r
51                 int d = Raw[6 + 14];\r
52                 int h = Raw[6 + 14];\r
53                 int min = Raw[6 + 14];\r
54                 int s = Raw[6 + 14];\r
55                 int ftow = BitConverter.ToInt32(Raw, 6 + 8);\r
56                 DateTime utc = new DateTime(y, m, d, h, min, s, \r
57                                                             DateTimeKind.Utc);\r
58                 return utc.AddTicks(ftow / 100);\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.NavTimeUtc, 20, 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 NavTimeUtc(sentence, length);\r
78         }\r
79 \r
80         #endregion\r
81     }\r
82 }\r