aboutsummaryrefslogtreecommitdiff
path: root/contrib/ntp/html/mx4200data.htm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/html/mx4200data.htm')
-rw-r--r--contrib/ntp/html/mx4200data.htm445
1 files changed, 445 insertions, 0 deletions
diff --git a/contrib/ntp/html/mx4200data.htm b/contrib/ntp/html/mx4200data.htm
new file mode 100644
index 000000000000..212360764076
--- /dev/null
+++ b/contrib/ntp/html/mx4200data.htm
@@ -0,0 +1,445 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+<TITLE>MX4200 Receiver Data Format</TITLE>
+<BODY>
+<h1>MX4200 Receiver Data Format</h1>
+
+<hr>
+<h2>Table of Contents</h2>
+
+<ul>
+ <li><a href="#control">Control Port Sentences</a></li>
+ <li><a href="#input">Control Port Input Sentences</a>
+ <ul>
+ <li> <a href="#input_000">$PMVXG,000</a> Initialization/Mode Control - Part A</li>
+ <li> <a href="#input_001">$PMVXG,001</a> Initialization/Mode Control - Part B</li>
+ <li> <a href="#input_007">$PMVXG,007</a> Control Port Configuration</li>
+ <li> <a href="#input_023">$PMVXG,023</a> Time Recovery Configuration</li>
+ <li> <a href="#input_gpq">$CDGPQ,YYY</a> Query From a Remote Device / Request to Output a Sentence</li>
+ </ul>
+ <li><a href="#output">Control Port Output Sentences</a>
+ <ul>
+ <li> <a href="#output_000">$PMVXG,000</a> Receiver Status
+ <li> <a href="#output_021">$PMVXG,021</a> Position, Height, Velocity
+ <li> <a href="#output_022">$PMVXG,022</a> DOPs
+ <li> <a href="#output_030">$PMVXG,030</a> Software Configuration
+ <li> <a href="#output_101">$PMVXG,101</a> Control Sentence Accept/Reject
+ <li> <a href="#output_523">$PMVXG,523</a> Time Recovery Configuration
+ <li> <a href="#output_830">$PMVXG,830</a> Time Recovery Results
+ </ul>
+</ul>
+
+<hr>
+
+<h2><a name="control">Control Port Sentences</a></h2>
+
+<p>The Control (CDU) Port is used to initialize, monitor, and control
+the receiver. The structure of the control port sentences is based on
+the <cite>NMEA-0183</cite> Standard for Interfacing Marine Electronics
+Navigation Devices (version 1.5). For more details, please refer to
+the <cite>NMEA-0183</cite> Specification available from the <a
+href="http://www.nmea.org/"> National Marine Electronics
+Association</a>.</p>
+
+<p>Reserved characters are used to indicate the beginning and the end
+of records in the data stream, and to delimit data fields within a
+sentence. Only printable ASCII characters (Hex 20 through 7F) may be
+used in a sentence. <a href="#table_2">Table 2</a> lists the reserved
+characters and defines their usage. <a href="#table_1">Table 1</a>
+illustrates the general Magnavox proprietary NMEA sentence format.
+</p>
+
+<h4><a name="table_1">Table 1. Magnavox Proprietary NMEA Sentence
+Format</a></h4>
+
+<p>
+<code>
+$PMVXG,XXX,...................*CK
+</code>
+
+<p>
+
+<table border>
+ <tr> <th>Character <th>Meaning
+ <tr> <td><code>$</code> <td>Sentence Start Character
+ <tr> <td><code>P</code> <td>Special ID (P = Proprietary)
+ <tr> <td><code>MVX</code> <td>Originator ID (MVX = Magnavox)
+ <tr> <td><code>G</code> <td>Interface ID (G = GPS)
+ <tr> <td><code>XXX</code> <td>Sentence Type
+ <tr> <td><code>...</code> <td>Data
+ <tr> <td><code>*</code> <td>Optional Checksum Field Delimiter
+ <tr> <td><code>CK</code> <td>Optional Checksum
+</table>
+
+<h4><a name="table_2">Table 2. NMEA Sentence Reserved Characters</a></h4>
+
+<table border>
+ <tr> <th>Character <th>Hex Value <th>Usage
+ <tr> <td><code>$</code> <td>24 <td>Start of Sentence Identifier
+ <tr> <td><code>{cr}{lf}</code> <td>0D 0A <td>End of Sentence Identifier
+ <tr> <td><code>,</code> <td>2C <td>Sentence Delimiter
+ <tr> <td><code>*</code> <td>2A <td>Optional Checksum Field Delimiter
+</table>
+
+<p>Following the start character <code>$</code>, are five characters
+which constitute the block label of the sentence. For Magnavox
+proprietary sentences, this label is always <code>PMVXG</code>. The
+next field after the block label is the sentence type, consisting of
+three decimal digits.</p>
+
+<p>The data, delimited by commas, follows the sentence type. Note that
+the receiver uses a free-format parsing algorithm, so you need not send
+the exact number of characters shown in the examples. You will need to
+use the commas to determine how many bytes of data need to be
+retrieved.</p>
+
+<p>The notation <code>CK</code> shown in <a href="#table_1">Table 1</a>
+symbolically indicates the optional checksum in the examples. The
+checksum is computed by exclusive-ORing all of the bytes between the
+<code>$</code> and the <code>*</code> characters. The <code>$</code> ,
+<code>*</code> and the checksum are not included in the checksum
+computation.</p>
+
+<p>Checksums are optional for Control Port input sentences, but are
+highly recommended to limit the effects of communication errors.
+Magnavox receivers always generate checksums for Control Port output
+sentences.</p>
+
+<p>ASCII data characters are transmitted in the following format:</p>
+
+<table border>
+ <tr> <td> Data Bits <td>8 (msb always 0)
+ <tr> <td> Parity <td>None
+ <tr> <td> Stop Bits <td>1
+</table>
+
+<p>NULL fields are fields which do not contain any data. They would
+appear as two commas together in the sentence format, except for the
+final field. Some Magnavox proprietary sentences require that the
+format contain NULL fields. mandatory NULL fields are identified by an
+'*' next to the respective field.</p>
+
+<hr>
+
+<h2><a name="input">Control Port Input Sentences</a></h2>
+These are the subset of the MX4200 control port input sentences sent by
+the NTP driver to the GPS receiver.
+
+<hr>
+
+<h3><a name="input_000">$PMVXG,000</a></h3>
+<h4>Initialization/Mode Control - Part A</h4>
+Initializes the time, position and antenna height of the MX4200.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Default <th>Range
+ <tr> <td>1 <td>Day <td> <td>Int <td> <td>1-31
+ <tr> <td>2 <td>Month <td> <td>Int <td> <td>1-12
+ <tr> <td>3 <td>Year <td> <td>Int <td> <td>1991-9999
+ <tr> <td>4 <td>GMT Time <td>HHMMSS <td>Int <td> <td>000000-235959
+ <tr> <td>5 <td>WGS-84 Latitude <td>DDMM.MMMM<td>Float<td>0.0 <td>0 - 8959.9999
+ <tr> <td>6 <td>North/South Indicator <td> <td>Char <td>N <td>N,S
+ <tr> <td>7 <td>WGS-84 Longitude <td>DDDMM.MMMM<td>Float<td>0.0 <td>0 - 17959.9999
+ <tr> <td>8 <td>East/West Indicator <td> <td>Char <td>E <td>E,W
+ <tr> <td>9 <td>Altitude (height above Mean Sea Level) in meters (WGS-84) <td>Meters<td>Float<td>0.0<td>+/-99999.0
+ <tr> <td>10 <td>Not Used <td> <td> <td> <td>
+</table>
+Example:<br>
+<code>$PMVXG,000,,,,,,,,,,*48</code><br>
+<code>$PMVXG,000,,,,,5128.4651,N,00020.0715,W,58.04,*4F</code>
+
+<hr>
+
+<h3><a name="input_001">$PMVXG,001</a></h3>
+<h4>Initialization/Mode Control - Part B</h4>
+Specifies various navigation parameters: Altitude aiding, acceleration
+DOP limits, and satellite elevation limits.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Default <th>Range
+ <tr> <td>*1 <td>Constrain Altitude <td> <td>Int <td>1 <td>0=3D Only<br>1=Auto<br>2=2D Only
+ <tr> <td>2 <td>Not Used <td> <td> <td> <td>
+ <tr> <td>*3 <td>Horizontal Acceleration Factor<td>m/sec^2 <td>Float <td>1.0 <td>0.5-10.0
+ <tr> <td>*4 <td>Not Used <td> <td> <td> <td>
+ <tr> <td>*5 <td>VDOP Limit <td> <td>Int <td>10 <td>1-9999
+ <tr> <td>*6 <td>HDOP Limit <td> <td>Int <td>10 <td>1-9999
+ <tr> <td>7 <td>Elevation Limit <td>Deg <td>Int <td>5 <td>0-90
+ <tr> <td>8 <td>Time Output Mode <td> <td>Char <td>U <td>U=UTC<br>L=Local Time
+ <tr> <td>9 <td>Local Time Offset <td>HHMM <td>Int <td>0 <td>+/- 0-2359
+</table>
+Example:<br>
+<code>$PMVXG,001,3,,0.1,0.1,10,10,5,U,0*06</code>
+
+<hr>
+
+
+<h3><a name="input_007">$PMVXG,007</a></h3>
+<h4>Control Port Output Configuration</h4>
+This message enables or disables output of the specified sentence and
+defines the output rate. The user sends this message for each sentence
+that the receiver is to output.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Default <th>Range
+ <tr> <td>1 <td>Control Port Output Block Label<td> <td>Char <td> <td>
+ <tr> <td>2 <td>Clear Current Output List<td> <td>Int <td> <td>0=No<br>1=Yes
+ <tr> <td>3 <td>Add/Delete Sentence from List<td> <td>Int <td> <td>1=Append<br>2=Delete
+ <tr> <td>4 <td>Not Used <td> <td> <td> <td>
+ <tr> <td>5 <td>Sentence Output Rate <td>Sec <td>Int <td> <td>1-9999
+ <tr> <td>6 <td># digits of Precision for CGA and GLL sentences<td> <td>Int <td>2 <td>2-4
+ <tr> <td>7 <td>Not Used <td> <td> <td> <td>
+ <tr> <td>8 <td>Not Used <td> <td> <td> <td>
+</table>
+Example:<br>
+<code>$PMVXG,007,022,0,1,,1,,,*4F</code>
+
+<hr>
+
+
+<h3><a name="input_023">$PMVXG,023</a></h3>
+<h4>Time Recovery Configuration</h4>
+This message is used to enable/disable the time recovery feature of the
+receiver. The time synchronization for the 1PPS output is specified in
+addition to a user time bias and an error tolerance for a valid pulse.
+This record is accepted in units configured for time recovery. If the
+back panel contains a 1PPS outlet, the receiver is a time recovery
+unit.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Default <th>Range
+ <tr> <td>*1 <td>Time Recovery Mode <td> <td>Char <td>D <td>D=Dynamic<br>S=Static<br>K=Known Position<br>N=No Time Recovery
+ <tr> <td>2 <td>Time Synchronization <td> <td>Char <td>G <td>U=UTC<br>G=GPS
+ <tr> <td>3 <td>Time Mark Mode <td> <td>Char <td>A <td>A=Always<br>V=Valid Pulses Only
+ <tr> <td>4 <td>Maximum Time Error <td>Nsec <td>Int <td>100 <td>50-1000
+ <tr> <td>5 <td>User Time Bias <td>Nsec <td>Int <td>0 <td>+/- 99999
+ <tr> <td>6 <td>ASCII Time Message Control<td> <td>Int <td>0 <td>0=No Output<br>1=830 to Control Port<br>2=830 to Equipment Port
+ <tr> <td>7 <td>Known Pos PRN <td> <td>Int <td>0 <td>1-32<br>0=Track All Sats
+</table>
+Example:<br>
+<code>$PMVXG,023,S,U,A,500,0,1,*16</code>
+
+<hr>
+
+
+<h3><a name="input_gpq">$CDGPQ,YYY</a></h3>
+<h4>Query From a Remote Device / Request to Output a Sentence</h4>
+Enables the controller to request a one-time transmission of a specific
+block label. To output messages at a periodic rate, refer to input
+sentence <a href="#input_007">$PMVXG,007</a>.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Default <th>Range
+ <tr> <td>1:CD <td>ID of Remote Device <td> <td>Char <td> <td>(See <cite>NMEA-0183</cite>)
+ <tr> <td>2:GP <td>GPS <td> <td>Char <td> <td>(See <cite>NMEA-0183</cite>)
+ <tr> <td>3:Q <td>Query <td> <td>Char <td> <td>(See <cite>NMEA-0183</cite>)
+ <tr> <td>4:YYY <td>Label of Desired Sentence<td> <td>Char <td> <td>Any Valid NMEA or Magnavox Sentence Type
+</table>
+Example:<br>
+<code>$CDGPQ,030*5E</code>
+
+
+
+<hr>
+<h2><a name="output">Control Port Output Sentences</a></h2>
+These are the subset of the MX4200 control port output sentences
+recognized by the NTP driver.
+
+<hr>
+
+<h3><a name="output_000">$PMVXG,000</a></h3>
+<h4>Receiver Status</h4>
+Returns the current status of the receiver including the operating
+mode, number of satellites visible, and the number of satellites being
+tracked.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>Current Receiver Status <td> <td>Char <td>ACQ=Reacquisition<br>ALT=Constellation Selection<br>IAC=Initial Acquisition<br>IDL=Idle, No Satellites<br>NAV=Navigating<br>STS=Search The Sky<br>TRK=Tracking
+ <tr> <td>2 <td>Number of Satellites that should be Visible <td> <td>Int <td>0-12
+ <tr> <td>3 <td>Number of Satellites being Tracked <td> <td>Int <td>0-12
+ <tr> <td>4 <td>Time since Last Navigation <td>HHMM <td>Int <td>0-2359
+ <tr> <td>5 <td>Initialization Status <td> <td>Int <td>0=Waiting for Initialization<br>1=Initialization Complete
+</table>
+Example:<br>
+<code>$PMVXG,000,TRK,3,3,0122,1*19</code>
+
+<hr>
+
+<h3><a name="output_021">$PMVXG,021</a></h3>
+<h4>Position, Height, Velocity</h4>
+This sentence gives the receiver position, height, navigation mode and
+velocity north/east. <em>This sentence is intended for post analysis
+applications.</em>
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>UTC Measurement Time <td>Seconds into the week<td>Float<td>0-604800.00
+ <tr> <td>2 <td>WGS-84 Latitude <td>DDMM.MMMM<td>Float <td>0-89.9999
+ <tr> <td>3 <td>North/South Indicator <td> <td>Char <td>N, S
+ <tr> <td>4 <td>WGS-84 Longitude <td>DDDMM.MMMM <td>Float <td>0-179.9999
+ <tr> <td>5 <td>East/West Indicator <td> <td>Char <td>E, W
+ <tr> <td>6 <td>Altitude (MSL) <td>Meters <td>Float <td>
+ <tr> <td>7 <td>Geoidal Height <td>Meters <td>Float <td>
+ <tr> <td>8 <td>Velocity East <td>M/Sec <td>Float <td>
+ <tr> <td>9 <td>Velocity North <td>M/Sec <td>Float <td>
+ <tr> <td>10 <td>Navigation Mode <td> <td>Int <td><em>Navigating</em><br>
+ 1=Position From a Remote Device<br>
+ 2=2D<br>
+ 3=3D<br>
+ 4=2D differential<br>
+ 5=3D differential<br>
+ <em>Not Navigating</em><br>
+ 51=Too Few Satellites<br>
+ 52=DOPs too large<br>
+ 53=Position STD too large<br>
+ 54=Velocity STD too large<br>
+ 55=Too many iterations for velocity<br>
+ 56=Too many iterations for position<br>
+ 57=3 Sat Startup failed
+</table>
+Example:<br>
+<code>$PMVXG,021,142244.00,5128.4744,N,00020.0593,W,00054.4,0047.4,0000.1,-000.2,03*66</code>
+
+<hr>
+
+<h3><a name="output_022">$PMVXG,022</a></h3>
+<h4>DOPs</h4>
+This sentence reports the DOP (Dilution Of Precision) values actually
+used in the measurement processing corresponding to the satellites
+listed. The satellites are listed in receiver channel order. Fields
+11-16 are output only on 12-channel receivers.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>UTC Measurement Time <td>Seconds into the week<td>Float<td>0-604800.00
+ <tr> <td>2 <td>East DOP (EDOP) <td> <td>Float <td>
+ <tr> <td>3 <td>North DOP (NDOP) <td> <td>Float <td>
+ <tr> <td>4 <td>Vertical DOP (VDOP) <td> <td>Float <td>
+ <tr> <td>5 <td>PRN on Channel #1 <td> <td>Int <td>1-32
+ <tr> <td>6 <td>PRN on Channel #2 <td> <td>Int <td>1-32
+ <tr> <td>7 <td>PRN on Channel #3 <td> <td>Int <td>1-32
+ <tr> <td>8 <td>PRN on Channel #4 <td> <td>Int <td>1-32
+ <tr> <td>9 <td>PRN on Channel #5 <td> <td>Int <td>1-32
+ <tr> <td>10 <td>PRN on Channel #6 <td> <td>Int <td>1-32
+ <tr> <td>11 <td>PRN on Channel #7 <td> <td>Int <td>1-32
+ <tr> <td>12 <td>PRN on Channel #8 <td> <td>Int <td>1-32
+ <tr> <td>13 <td>PRN on Channel #9 <td> <td>Int <td>1-32
+ <tr> <td>14 <td>PRN on Channel #10 <td> <td>Int <td>1-32
+ <tr> <td>15 <td>PRN on Channel #11 <td> <td>Int <td>1-32
+ <tr> <td>16 <td>PRN on Channel #12 <td> <td>Int <td>1-32
+</table>
+Example:<br>
+<code>$PMVXG,022,142243.00,00.7,00.8,01.9,27,26,10,09,13,23*77</code>
+
+<hr>
+
+<h3><a name="output_030">$PMVXG,030</a></h3>
+<h4>Software Configuration</h4>
+This sentence contains the navigation processor and baseband firmware
+version numbers.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>Nav Processor Version Number <td> <td>Char <td>
+ <tr> <td>2 <td>Baseband Firmware Version Number <td> <td>Char <td>
+</table>
+Example:<br>
+<code>$PMVXG,030,DA35,015</code>
+
+<hr>
+
+<h3><a name="output_101">$PMVXG,101</a></h3>
+<h4>Control Sentence Accept/Reject</h4>
+This sentence is returned (on the Control Port) for every
+<strong>$PMVXG</strong> and <strong>$XXGPQ</strong> sentence that is
+received.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>Sentence ID <td> <td>Char <td>
+ <tr> <td>2 <td>Accept/Reject Status <td> <td>Int <td>0=Sentence Accepted<br>
+ 1=Bad Checksum<br>
+ 2=Illegal Value<br>
+ 3=Unrecognized ID<br>
+ 4=Wrong # of fields<br>
+ 5=Required Data Field Missing<br>
+ 6=Requested Sentence Unavailable
+ <tr> <td>3 <td>Bad Field Index <td> <td>Int <td>
+ <tr> <td>4 <td>Requested Sentence ID (If field #1 = GPQ) <td> <td>Char <td>
+</table>
+Example:<br>
+<code>$PMVXG,101,GPQ,0,,030*0D</code>
+
+<hr>
+
+<h3><a name="output_523">$PMVXG,523</a></h3>
+<h4>Time Recovery Configuration</h4>
+This sentence contains the configuration of the time recovery function
+of the receiver.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>Time Recovery Mode <td> <td>Char <td>D=Dynamic<br>S=Static<br>K=Known Position<br>N=No Time Recovery
+ <tr> <td>2 <td>Time Synchronization <td> <td>Char <td>U=UTC Time<br>G=GPS Time
+ <tr> <td>3 <td>Time Mark Mode <td> <td>Char <td>A=Always Output Time Pulse<br>V=Only when Valid
+ <tr> <td>4 <td>Maximum Time Error for which a time mark will be considered valid <td>Nsec <td>Int <td>
+ <tr> <td>5 <td>User Time Bias <td>Nsec <td>Int <td>
+ <tr> <td>6 <td>Time Message Control <td> <td>Int <td>0=No Message<br>1=830 to Control Port<br>2=830 to Equipment Port
+ <tr> <td>7 <td>Not Used <td> <td> <td>
+</table>
+Example:<br>
+<code>$PMVXG,523,S,U,A,0500,000000,1,0*23</code>
+
+<hr>
+
+<h3><a name="output_830">$PMVXG,830</a></h3>
+<h4>Time Recovery Results</h4>
+This sentence is output approximately 1 second preceding the 1PPS
+output. It indicates the exact time of the next pulse, whether or not
+the time mark will be valid (based on operator-specified error
+tolerance), the time to which the pulse is synchronized, the receiver
+operating mode, and the time error of the <strong>last</strong> 1PPS
+output. The leap second flag (Field #11) is not output by older
+receivers.
+
+<p>
+<table border>
+ <tr> <th>Field <th>Description <th>Units <th>Format <th>Range
+ <tr> <td>1 <td>Time Mark Valid <td> <td>Char <td>T=Valid<br>F=Not Valid
+ <tr> <td>2 <td>Year <td> <td>Int <td>1993-
+ <tr> <td>3 <td>Month <td> <td>Int <td>1-12
+ <tr> <td>4 <td>Day <td>Nsec <td>Int <td>1-31
+ <tr> <td>5 <td>Time <td>HH:MM:SS<td>Int <td>00:00:00-23:59:59
+ <tr> <td>6 <td>Time Synchronization <td> <td>Char <td>U=UTC<br>G=GPS
+ <tr> <td>7 <td>Operating Mode <td> <td>Char <td>D=Dynamic<br>S=Static<br>K=Known Position
+ <tr> <td>8 <td>Oscillator Offset - estimate of oscillator frequency error <td>PPB <td>Int <td>
+ <tr> <td>9 <td>Time Mark Error of last pulse <td>Nsec <td>Int <td>
+ <tr> <td>10 <td>User Time Bias <td>Nsec <td>Int <td>
+ <tr> <td>11 <td>Leap Second Flag - indicates that a leap second will occur.
+ This value is usually zero except during the week
+ prior to a leap second occurence, when this value
+ will be set to +/-1. A value of +1 indicates
+ that GPS time will be 1 second further ahead of
+ UTC time.
+ <td> <td>Int <td>-1,0,1
+</table>
+Example:<br>
+<code>$PMVXG,830,T,1998,10,12,15:30:46,U,S,000298,00003,000000,01*02</code>
+
+<hr>
+
+
+</BODY>
+</HTML>