{\r
Degree lon = BitConverter.ToInt32(Raw, 6 + 4) * 1e-7;\r
Degree lat = BitConverter.ToInt32(Raw, 6 + 8) * 1e-7;\r
- double h = BitConverter.ToUInt32(Raw, 6 + 12);\r
- return new GeodeticCoordinate(lon, lat, h);\r
+ Height h = new Height(\r
+ BitConverter.ToUInt32(Raw, 6 + 12) * 1e-3, \r
+ Height.Base.Ellipsoid);\r
+ return new GeodeticCoordinate(lat, lon, h);\r
}\r
}\r
\r
- public double MslHeight\r
+ public Height MslHeight\r
{\r
get\r
{\r
- return BitConverter.ToUInt32(Raw, 6 + 16);\r
+ Height h = new Height(\r
+ BitConverter.ToUInt32(Raw, 6 + 16) * 1e-3,\r
+ Height.Base.MeanSeaLevel);\r
+ return h;\r
}\r
}\r
\r
}\r
\r
[Test]\r
+ public void NavPosLlhTest()\r
+ {\r
+ UnknownPacket packet;\r
+ Assert.IsTrue(NavPosLlh.TryParse(P.NavPosLlh, out packet));\r
+ NavPosLlh p = packet as NavPosLlh;\r
+ Assert.AreEqual(Packet.MessageID.NavPosLlh, p.ID);\r
+ Assert.AreEqual(timeOfWeek, p.TimeOfWeek);\r
+ Assert.AreEqual(35.710058, (double)p.Position.Latitude);\r
+ Assert.AreEqual(139.8107190, (double)p.Position.Longitude);\r
+ Assert.AreEqual(676.391, (double)p.Position.Altitude);\r
+ Assert.AreEqual(Height.Base.Ellipsoid, \r
+ p.Position.Altitude.BaseLevel);\r
+ Assert.AreEqual(640.0, (double)p.MslHeight);\r
+ Assert.AreEqual(Height.Base.MeanSeaLevel, p.MslHeight.BaseLevel);\r
+ }\r
+\r
+ [Test]\r
public void NavSolTest()\r
{\r
UnknownPacket packet;\r
public static readonly byte[] NavClock;\r
public static readonly byte[] NavDop;\r
public static readonly byte[] NavPosEcef;\r
+ public static readonly byte[] NavPosLlh;\r
public static readonly byte[] NavSol;\r
\r
\r
0xFF, 0xFF\r
};\r
\r
+ NavPosLlh = new byte[]{\r
+ 0xB5, 0x62, 0x01, 0x02, 0x1C, 0x00,\r
+ 0xE5, 0x16, 0x3F, 0x0A, // tow\r
+ 0x36, 0x6C, 0x55, 0x53, // lon\r
+ 0x24, 0xEC, 0x48, 0x15, // lat \r
+ 0x27, 0x52, 0x0A, 0x00, // height\r
+ 0x00, 0xC4, 0x09, 0x00, // hMSL \r
+ 0x6D, 0x14, 0x00, 0x00, // hAcc\r
+ 0x6D, 0x14, 0x00, 0x00, // vAcc\r
+ 0xFF, 0xFF\r
+ };\r
+\r
NavSol = new byte[]{\r
0xB5, 0x62, 0x01, 0x06, 0x34, 0x00,\r
0xE5, 0x16, 0x3F, 0x0A, // tow\r