OSDN Git Service

TryParseにてlengthの省略に対応
authorkimikage <kimikage_ceo@hotmail.com>
Wed, 23 Feb 2011 04:45:59 +0000 (13:45 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Wed, 23 Feb 2011 04:45:59 +0000 (13:45 +0900)
Yubeshi/Ubx/Packet.cs

index 101a6e5..0626502 100755 (executable)
@@ -81,6 +81,14 @@ namespace Yubeshi.Ubx
             CfgNav = 0x0624,\r
             CfgPm = 0x0632,\r
             CfgRInv = 0x0634,\r
+            MonIO = 0x0A02,\r
+            MonVer = 0x0A04,\r
+            MonMsgPP = 0x0A06,\r
+            MonRxBuf = 0x0A07,\r
+            MonTxBuf = 0x0A08,\r
+            MonHw = 0x0A09,\r
+            MonHw2 = 0x0A0B,\r
+            MonRxR = 0x0A21,\r
             AidReq = 0x0B00,\r
             AidIni = 0x0B01,\r
             AidHui = 0x0B02,\r
@@ -200,6 +208,13 @@ namespace Yubeshi.Ubx
 \r
         protected static bool TryParse(\r
                         byte[] sentence, out UnknownPacket packet,\r
+                        MessageID id, PacketBuilder builder)\r
+        {\r
+            return TryParse(sentence, out packet, id, -1, builder);\r
+        }\r
+\r
+        protected static bool TryParse(\r
+                        byte[] sentence, out UnknownPacket packet,\r
                         MessageID id, int fixedLength, PacketBuilder builder)\r
         {\r
             packet = null;\r
@@ -211,13 +226,13 @@ namespace Yubeshi.Ubx
             {\r
                 return false;\r
             }\r
-            int messageId = sentence[2] << 8 | sentence[3];\r
-            if ((int)id != messageId && id != MessageID.Unknown)\r
+            MessageID mid = (MessageID)(sentence[2] << 8 | sentence[3]);\r
+            if (id != mid && id != MessageID.Unknown)\r
             {\r
                 return false;\r
             }\r
             int length = sentence[5] << 8 | sentence[4];\r
-            if (length > 0 && fixedLength != length)\r
+            if (fixedLength >= 0 && fixedLength != length)\r
             {\r
                 return false;\r
             }\r