OSDN Git Service

Rxmパケット対応の準備
authorkimikage <kimikage_ceo@hotmail.com>
Fri, 28 Jan 2011 09:33:21 +0000 (18:33 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Fri, 28 Jan 2011 09:33:21 +0000 (18:33 +0900)
Yubeshi/Ubx/NavSol.cs
Yubeshi/Ubx/Packet.cs
Yubeshi/Ubx/RxmRaw.cs [new file with mode: 0755]
Yubeshi/Yubeshi.csproj
YubeshiTest/UbxTest/RxmPacketTest.cs [new file with mode: 0755]
YubeshiTest/YubeshiTest.csproj

index e61e805..b198496 100755 (executable)
@@ -83,7 +83,7 @@ namespace Yubeshi.Ubx
             }\r
         }\r
 \r
-        public int SVsUsed\r
+        public int NumberOfSatelites\r
         {\r
             get;\r
             private set;\r
index 4418ccd..dbcae2e 100755 (executable)
@@ -50,6 +50,18 @@ namespace Yubeshi.Ubx
             NavClock = 0x0122,\r
             NavSvInfo = 0x0130,\r
             NavSbas = 0x0132,\r
+            RxmRaw = 0x0210,\r
+            RxmSfrb = 0x0211,\r
+            RxmSvSI = 0x0220,\r
+            RxmAlm = 0x0230,\r
+            RxmEph = 0x0231,\r
+            RxmPosReq = 0x0240,\r
+            RxmPmReq = 0x0241,\r
+            InfError = 0x0400,\r
+            InfWarning = 0x0401,\r
+            InfNotice = 0x0402,\r
+            InfTest = 0x0403,\r
+            InfDebug = 0x0404,\r
         }\r
 \r
         public enum GpsFixType : byte\r
diff --git a/Yubeshi/Ubx/RxmRaw.cs b/Yubeshi/Ubx/RxmRaw.cs
new file mode 100755 (executable)
index 0000000..8b28b37
--- /dev/null
@@ -0,0 +1,106 @@
+/*\r
+ *     Yubeshi GPS Parser\r
+ *\r
+ *     This software is distributed under a zlib-style license.\r
+ *     See license.txt for more information.\r
+ */\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+\r
+namespace Yubeshi.Ubx\r
+{\r
+    public class RxmRaw : Packet\r
+    {\r
+        #region type definitions\r
+        public struct MeasurementData\r
+        { \r
+            public byte[] Raw\r
+            {\r
+                get;\r
+                private set;\r
+            }\r
+            public void Set(byte[] raw)\r
+            {\r
+                Raw = raw;\r
+            }\r
+            \r
+        }\r
+        #endregion\r
+\r
+        #region constructors\r
+\r
+        public RxmRaw(byte[] sentence, int length)\r
+            : base(sentence, length)\r
+        {\r
+            ID = MessageID.RxmRaw;\r
+            Data = new MeasurementData[NumberOfSatelites];\r
+            for (int i = 0; i < Data.Length; ++i)\r
+            {\r
+                Data[i].Set(OctetString.Substring(Raw, 8 + 24 * i, 24));\r
+            }\r
+        }\r
+\r
+        #endregion\r
+\r
+        #region properties\r
+\r
+        public decimal TimeOfWeek\r
+        {\r
+            get\r
+            {\r
+                return BitConverter.ToUInt32(Raw, 6 + 0) * 1e-3m;\r
+            }\r
+        }\r
+\r
+        public int Week\r
+        {\r
+            get\r
+            {\r
+                return BitConverter.ToInt16(Raw, 6 + 4);\r
+            }\r
+        }\r
+\r
+        public int NumberOfSatelites\r
+        {\r
+            get\r
+            {\r
+                return Raw[6 + 6];\r
+            }\r
+        }\r
+\r
+        public MeasurementData[] Data\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
+        #endregion\r
+\r
+        #region public methods\r
+\r
+        public static bool TryParse(byte[] sentence, out UnknownPacket packet)\r
+        {\r
+            packet = null;\r
+            if (sentence.Length < 8)\r
+            {\r
+                return false;\r
+            }\r
+            int length = 8 + 24 * sentence[6 + 6];\r
+            return TryParse(sentence, out packet, \r
+                                        MessageID.RxmRaw, length, Build);\r
+        }\r
+\r
+        #endregion\r
+\r
+        #region private methods\r
+\r
+        private static Packet Build(byte[] sentence, int length)\r
+        {\r
+            return new RxmRaw(sentence, length);\r
+        }\r
+\r
+        #endregion\r
+    }\r
+}\r
index 91c888d..7052096 100755 (executable)
@@ -71,6 +71,7 @@
     <Compile Include="Ubx\NavTimeUtc.cs" />\r
     <Compile Include="Ubx\NavSvInfo.cs" />\r
     <Compile Include="Ubx\NavSbas.cs" />\r
+    <Compile Include="Ubx\RxmRaw.cs" />\r
     <Compile Include="UnknownPacket.cs" />\r
     <Compile Include="EnuVelocity.cs" />\r
   </ItemGroup>\r
diff --git a/YubeshiTest/UbxTest/RxmPacketTest.cs b/YubeshiTest/UbxTest/RxmPacketTest.cs
new file mode 100755 (executable)
index 0000000..60da3a9
--- /dev/null
@@ -0,0 +1,36 @@
+/*\r
+ *     Yubeshi GPS Parser\r
+ *\r
+ *     This software is distributed under a zlib-style license.\r
+ *     See license.txt for more information.\r
+ */\r
+\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using NUnit.Framework;\r
+using Yubeshi;\r
+using Yubeshi.Ubx;\r
+using P = YubeshiTest.UbxTest.SamplePackets;\r
+\r
+namespace YubeshiTest.UbxTest\r
+{\r
+\r
+    class RxmPacketTest\r
+    {\r
+        private readonly decimal timeOfWeek = \r
+            new TimeSpan(1, 23, 45, 6, 789).Ticks * 1e-7m;\r
+        private readonly decimal timeOfWeekHD =\r
+            new TimeSpan(1, 23, 45, 6, 789).Ticks * 1e-7m + 012345e-9m;\r
+\r
+        [Test]\r
+        public void RxmRawTest()\r
+        {\r
+            UnknownPacket packet;\r
+            //Assert.IsTrue(RxmRaw.TryParse(P.RxmRaw, out packet));\r
+            //RxmRaw p = packet as RxmRaw;\r
+            //Assert.AreEqual(Packet.MessageID.RxmRaw, p.ID);\r
+        }\r
+\r
+    }\r
+}\r
index a2c86f9..3be3258 100755 (executable)
@@ -56,6 +56,7 @@
     <Compile Include="UbxTest\ParserTest.cs" />\r
     <Compile Include="UbxTest\SamplePackets.cs" />\r
     <Compile Include="EnuCoordinateTest.cs" />\r
+    <Compile Include="UbxTest\RxmPacketTest.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="app.config" />\r