<!-- $Id$ -->
<!-- Xsens MTi-G Binary Protocol description -->
<!DOCTYPE xsens SYSTEM "xsens.dtd">
<xsens>
<message name="WakeUp" ID="0x3E" to="host"/>
<message name="WakeUpAck" ID="0x3F" to="MT"/>
<message name="GoToConfig" ID="0x30" to="MT"/>
<message name="GoToConfigAck" ID="0x31" to="host"/>
<message name="GoToMeasurment" ID="0x10" to="MT"/>
<message name="GoToMeasurmentAck" ID="0x11" to="host"/>
<message name="Reset" ID="0x40" to="MT"/>
<message name="ResetAck" ID="0x41" to="host"/>
<message name="ReqDID" ID="0x00" to="MT"/>
<message name="DeviceID" ID="0x01" to="host">
<field name="id" format="U4"/>
</message>
<message name="ReqDataLength" ID="0x0A" to="MT"/>
<message name="DataLength" ID="0x0B" to="host">
<field name="length" format="U2"/>
</message>
<message name="Error" ID="0x42" to="host">
<field name="errorcode" format="U1"/>
</message>
<message name="ReqBaudrate" ID="0x18" to="MT"/>
<message name="ReqBaudrateAck" ID="0x19" to="host">
<field name="baudrate" format="U1"/>
</message>
<message name="SetBaudrate" ID="0x18" to="MT" length="1">
<field name="baudrate" format="U1"/>
</message>
<message name="SetBaudrateAck" ID="0x19" to="host"/>
<message name="SetSyncOutSettings" ID="0xD8" to="MT" length="3">
<field name="param" format="U1"/>
<field name="value" format="U2"/>
</message>
<message name="RestoreFactoryDef" ID="0x0E" to="MT"/>
<message name="RestoreFactoryDefAck" ID="0x0F" to="host"/>
<message name="ReqConfiguration" ID="0x0C" to="MT"/>
<message name="Configuration" ID="0x0D" to="host">
<field name="master_id" format="U4"/>
<field name="sampling" format="U2"/>
<field name="skip" format="U2"/>
<field name="syn_mode" format="U2"/>
<field name="syn_skip" format="U2"/>
<field name="syn_offset" format="U4"/>
<field name="date" format="U8"/>
<field name="time" format="U8"/>
<field name="reserved_host" format="U32"/>
<field name="reserved_client" format="U32"/>
<field name="number" format="U2"/>
<field name="id" format="U4"/>
<field name="data_length" format="U2"/>
<field name="out_mode" format="U2"/>
<field name="out_settings" format="U4"/>
<field name="reserved" format="U8"/>
</message>
<message name="ReqPeriod" ID="0x04" to="MT"/>
<message name="ReqPeriodAck" ID="0x05" to="host">
<field name="period" format="U2"/>
</message>
<message name="SetOutputConfiguration" ID="0xC0" to="MT"/>
<message name="SetPeriod" ID="0x04" to="MT" length="2">
<field name="period" format="U2"/>
</message>
<message name="SetPeriodAck" ID="0x05" to="host"/>
<message name="ReqOutputMode" ID="0xD0" to="MT"/>
<message name="ReqOutputModeAck" ID="0xD1" to="host">
<field name="mode" format="U2"/>
</message>
<message name="SetOutputMode" ID="0xD0" to="MT" length="2">
<field name="mode" format="U2"/>
</message>
<message name="SetOutputModeAck" ID="0xD1" to="host"/>
<message name="ReqOutputSettings" ID="0xD2" to="MT"/>
<message name="ReqOutputSettingsAck" ID="OxD3" to="host">
<field name="settings" format="U4"/>
</message>
<message name="SetOutputSettings" ID="0xD2" to="MT" length="4">
<field name="settings" format="U4"/>
</message>
<message name="SetOutputSettingsAck" ID="0xD3" to="host"/>
<message name="ReqData" ID="0x34" to="MT"/>
<message name="MTData" ID="0x32" to="host">
<field name="data" format="V"/>
</message>
<message name="MTData2" ID="0x36" to="host">
<field name="data" format="V"/>
</message>
<message name="ReqHeading" ID="Ox82" to="MT"/>
<message name="ReqHeadingAck" ID="0x83" to="host">
<field name="heading" format="R4" unit="rad"/>
</message>
<message name="SetHeading" ID="0x82" to="MT" length="4">
<field name="heading" format="R4" unit="rad"/>
</message>
<message name="SetHeadingAck" ID="0x83" to="host"/>
<message name="ReqMagneticDeclination" ID="0x6A" to="MT"/>
<message name="ReqMagneticDeclinationAck" ID="0x6B" to="host">
<field name="declination" format="R4" unit="rad"/>
</message>
<message name="SetMagneticDeclination" ID="0x6A" to="MT" length="4">
<field name="declination" format="R4" unit="rad"/>
</message>
<message name="SetMagneticDeclinationAck" ID="0x6B" to="host"/>
<message name="ReqLeverArmGps" ID="0x68" to="MT"/>
<message name="SetLeverArmGps" ID="0x68" to="MT" length="12">
<field name="x" format="R4" unit="m"/>
<field name="y" format="R4" unit="m"/>
<field name="z" format="R4" unit="m"/>
</message>
<message name="ReqLeverArmGpsAck" ID="0x69" to="host" length="12">
<field name="x" format="R4" unit="m"/>
<field name="y" format="R4" unit="m"/>
<field name="z" format="R4" unit="m"/>
</message>
<message name="ReqGPSStatus" ID="0xA6" to="MT"/>
<message name="GPSStatus" ID="0xA7" to="host">
<field name="nch" format="U1"/>
<block times="nch" length="5">
<field name="chn" format="U1"/>
<field name="svid" format="U1"/>
<field name="bitmask" format="U1"/>
<field name="qi" format="I1"/>
<field name="cnr" format="I1"/>
</block>
</message>
<message name="ReqUTCTime" ID="0x60" to="MT"/>
<message name="UTCTime" ID="0x61" to="host">
<field name="time" format="U4" unit="ms"/>
</message>
<data name="RAWInertial" length="20">
<field name="accX" format="U2"/>
<field name="accY" format="U2"/>
<field name="accZ" format="U2"/>
<field name="gyrX" format="U2"/>
<field name="gyrY" format="U2"/>
<field name="gyrZ" format="U2"/>
<field name="magX" format="U2"/>
<field name="magY" format="U2"/>
<field name="magZ" format="U2"/>
<field name="temp" format="U2"/>
</data>
<data name="RAWGPS" length="44">
<field name="press" format="U2" scaling="2" unit="Pa"/>
<field name="bPrs" format="U1"/>
<field name="itow" format="U4" unit="ms"/>
<field name="lat" format="I4" scaling="1e-7" unit="deg"/>
<field name="lon" format="I4" scaling="1e-7" unit="deg"/>
<field name="alt" format="I4" unit="mm"/>
<field name="vel_n" format="I4" unit="cm/s"/>
<field name="vel_e" format="I4" unit="cm/s"/>
<field name="vel_d" format="I4" unit="cm/s"/>
<field name="hacc" format="U4" unit="mm"/>
<field name="vacc" format="U4" unit="mm"/>
<field name="sacc" format="U4" unit="mm"/>
<field name="bGPS" format="U1"/>
</data>
<data name="Temp" length="4">
<field name="temp" format="R4"/>
</data>
<data name="Calibrated" length="36">
<field name="accX" format="R4" unit="m/s/s"/>
<field name="accY" format="R4" unit="m/s/s"/>
<field name="accZ" format="R4" unit="m/s/s"/>
<field name="gyrX" format="R4" unit="rad/s"/>
<field name="gyrY" format="R4" unit="rad/s"/>
<field name="gyrZ" format="R4" unit="rad/s"/>
<field name="magX" format="R4"/>
<field name="magY" format="R4"/>
<field name="magZ" format="R4"/>
</data>
<data name="Quaternion" length="16">
<field name="q0" format="R4"/>
<field name="q1" format="R4"/>
<field name="q2" format="R4"/>
<field name="q3" format="R4"/>
</data>
<data name="Euler" length="12">
<field name="roll" format="R4" unit="deg"/>
<field name="pitch" format="R4" unit="deg"/>
<field name="yaw" format="R4" unit="deg"/>
</data>
<data name="Matrix" length="36">
<field name="a" format="R4"/>
<field name="b" format="R4"/>
<field name="c" format="R4"/>
<field name="d" format="R4"/>
<field name="e" format="R4"/>
<field name="f" format="R4"/>
<field name="g" format="R4"/>
<field name="h" format="R4"/>
<field name="i" format="R4"/>
</data>
<data name="Auxiliary" length="4">
<field name="ain_1" format="U2"/>
<field name="ain_2" format="U2"/>
</data>
<data name="Position" length="12">
<field name="lat" format="R4" unit="deg"/>
<field name="lon" format="R4" unit="deg"/>
<field name="alt" format="R4" unit="m"/>
</data>
<data name="Velocity" length="12">
<field name="vx" format="R4" unit="m/s"/>
<field name="vy" format="R4" unit="m/s"/>
<field name="vz" format="R4" unit="m/s"/>
</data>
<data name="Status" length="1">
<field name="status" format="U1"/>
</data>
<data name="TimeStamp" length="2">
<field name="ts" format="U2"/>
</data>
<data name="UTC" length="12">
<field name="nanosec" format="U4"/>
<field name="year" format="U2"/>
<field name="month" format="U1"/>
<field name="day" format="U1"/>
<field name="hour" format="U1"/>
<field name="min" format="U1"/>
<field name="sec" format="U1"/>
<field name="valid" format="U1"/>
</data>
<data name="RateOfTurn" length="12">
<field name="x" format="R4" unit="m"/>
<field name="y" format="R4" unit="m"/>
<field name="z" format="R4" unit="m"/>
</data>
<data name="Acceleration" length="12">
<field name="x" format="R4" unit="m"/>
<field name="y" format="R4" unit="m"/>
<field name="z" format="R4" unit="m"/>
</data>
<message name="XDI_GpsSvInfo" id="88A0" to="host">
<field name="iTOW" format="U4"/>
<field name="nch" format="U1"/>
<field name="res1" format="U1"/>
<field name="res2" format="U2"/>
<block times="nch" length="12">
<field name="chn" format="U1"/>
<field name="svid" format="U1"/>
<field name="bitmask" format="U1"/>
<field name="qi" format="U1"/>
<field name="cnr" format="U1"/>
<field name="elev" format="I1"/>
<field name="azim" format="I2"/>
<field name="prRes" format="I4"/>
</block>
</message>
<data name="GpsSol" length="49">
<field name="iTOW" format="U4"/>
<field name="fTOW" format="I4"/>
<field name="week" format="I2"/>
<field name="fix" format="U1"/>
<field name="flags" format="U1"/>
<field name="ecef_x" format="I4"/>
<field name="ecef_y" format="I4"/>
<field name="ecef_z" format="I4"/>
<field name="pAcc" format="U4"/>
<field name="ecef_vx" format="I4"/>
<field name="ecef_vy" format="I4"/>
<field name="ecef_vz" format="I4"/>
<field name="sAcc" format="U4"/>
<field name="pDop" format="U2"/>
<field name="res1" format="U1"/>
<field name="numSv" format="U1"/>
<field name="res2" format="U1"/>
</data>
<data name="StatusWord" length="4">
<field name="status" format="U4"/>
</data>
<data name="LatLon" length="8">
<field name="lat" format="R4" unit="deg"/>
<field name="lon" format="R4" unit="deg"/>
</data>
<data name="Altitude" length="4">
<field name="h" format="R4" unit="m"/>
</data>
<data name="VelocityXYZ" length="12">
<field name="x" format="R4" unit="m/s"/>
<field name="y" format="R4" unit="m/s"/>
<field name="z" format="R4" unit="m/s"/>
</data>
<mask name="Temp" bitmask="0x0001"/>
<mask name="Calibrated" bitmask="0x0002"/>
<mask name="Orientation" bitmask="0x0004"/>
<mask name="Auxiliary" bitmask="0x0008"/>
<mask name="Position" bitmask="0x0010"/>
<mask name="Velocity" bitmask="0x0020"/>
<mask name="Status" bitmask="0x0800"/>
<mask name="RAWGPS" bitmask="0x1000"/>
<mask name="RAWInertial" bitmask="0x4000"/>
<mask name="TimeStamp" bitmask="0x00000001"/>
<mask name="UTC" bitmask="0x00000002"/>
<mask name="OrientationMode" bitmask="0x0000000C" shift=">>2"/>
<mask name="AccOut" bitmask="0x00000010"/>
<mask name="GyrOut" bitmask="0x00000020"/>
<mask name="MagOut" bitmask="0x00000040"/>
<mask name="Format" bitmask="0x00000300" shift=">>8"/>
<mask name="Aux1Out" bitmask="0x00000400"/>
<mask name="Aux2Out" bitmask="0x00000800"/>
<mask name="LLA" bitmask="0x0001C000"/>
<mask name="Vel" bitmask="0x00060000"/>
<mask name="Convention" bitmask="0x80000000"/>
</xsens>