diff options
Diffstat (limited to 'html/drivers/driver20.html')
| -rw-r--r-- | html/drivers/driver20.html | 204 |
1 files changed, 154 insertions, 50 deletions
diff --git a/html/drivers/driver20.html b/html/drivers/driver20.html index 6391e869359f..1c3ac782f768 100644 --- a/html/drivers/driver20.html +++ b/html/drivers/driver20.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Generic NMEA GPS Receiver</title> - <!-- Changed by: Harlan &, 31-Mar-2014 --> + <!-- Changed by: Pearly &, 04-Feb-2019 --> <link href="scripts/style.css" type="text/css" rel="stylesheet"> <style type="text/css"> table.dlstable { font-size:85%; } @@ -13,7 +13,7 @@ <body> <h3>Generic NMEA GPS Receiver</h3> <p>Last update: - <!-- #BeginDate format:En2m -->31-Mar-2014 03:55<!-- #EndDate --> + <!-- #BeginDate format:En2m -->13-Jan-2020 07:12<!-- #EndDate --> UTC</p> <hr> <h4>Synopsis</h4> @@ -41,6 +41,9 @@ second insertion in UTC. To avoid problems mixing UTC and GPS timescales, the driver disables processing of UTC sentences once <tt>$GPZDG</tt> is received. + <br> + <strong>Caveat:</strong> Please see <a href="#talkerids">Talker + IDs</a> when using non-GPS or multi-system receivers. </p> <p> The driver expects the receiver to be set up to transmit at least one @@ -80,7 +83,14 @@ </tr><tr> <td class="ttf">$GPZDG,GPSTIME,DD,MM,YYYY,AA.BB,V*CS<cr><lf></td> <td>Accord</td> - </tr> + </tr><tr> + </tr><tr> + <td class="ttf">$PGRMF,gpsWk,gpsTow,DATE,UTC,LEAPS,LAT,LAT_REF,LON,LON_REF,TYPE,MODE,SPD,HDOP,TDOP*CS<cr><lf></td> + <td>Garmin</td> + </tr><tr> + <td class="ttf">$PUBX,04,UTC,DATE,utcTow,utcWk,LEAPS,clkBias,clkDrift,tpGran,*CS<cr><lf></td> + <td>UBLOX</td> + </tr> </tbody></table></p> <p><table class="dlstable" border="1"> @@ -91,78 +101,96 @@ </tr> <tr> - <td class="ttf">UTC</td> - <td>Time of day on UTC timescale. Hours, minutes and seconds [fraction (opt.)]. (hhmmss[.fff])</td> + <td class="ttf">ALT</td> + <td>Antenna Altitude</td> </tr><tr> - <td class="ttf">POS_STAT</td> - <td>Position status. (A = Data valid, V = Data invalid)</td> + <td class="ttf">ALT_UNIT</td> + <td>Altitude Units (Metres/Feet)</td> </tr><tr> - <td class="ttf">LAT</td> - <td>Latitude (llll.ll)</td> + <td class="ttf">DATE</td> + <td>Date (ddmmyy)</td> </tr><tr> - <td class="ttf">LAT_REF</td> - <td>Latitude direction. (N = North, S = South)</td> + <td class="ttf">DD</td> + <td>Day of the month (1-31)</td> </tr><tr> - <td class="ttf">LON</td> - <td>Longitude (yyyyy.yy)</td> + <td class="ttf">D_AGE</td> + <td>Age of last DGPS Fix</td> </tr><tr> - <td class="ttf">LON_REF</td> - <td>Longitude direction (E = East, W = West)</td> + <td class="ttf">D_REF</td> + <td>Reference ID of DGPS station</td> </tr><tr> - <td class="ttf">SPD</td> - <td>Speed over ground. (knots) (x.x)</td> + <td class="ttf">FIX_MODE</td> + <td>Position Fix Mode (0 = Invalid, >0 = Valid)</td> </tr><tr> - <td class="ttf">HDG</td> - <td>Heading/track made good (degrees True) (x.x)</td> + <td class="ttf">GEO</td> + <td>Geoid/Elipsoid separation</td> </tr><tr> - <td class="ttf">DATE</td> - <td>Date (ddmmyy)</td> + <td class="ttf">GPSTIME</td> + <td>Time of day on GPS timescale. Hours, minutes and seconds [fraction (opt.)] (hhmmss[.f])</td> </tr><tr> - <td class="ttf">MAG_VAR</td> - <td>Magnetic variation (degrees) (x.x)</td> + <td class="ttf">gpsTow</td> + <td>GPS week time, seconds since start of GPS week (0..604799)</td> </tr><tr> - <td class="ttf">MAG_REF</td> - <td>Magnetic variation (E = East, W = West)</td> + <td class="ttf">gpsWk</td> + <td>Week number in the GPS time scale (may exceed 1024)</td> </tr><tr> - <td class="ttf">FIX_MODE</td> - <td>Position Fix Mode (0 = Invalid, >0 = Valid)</td> + <td class="ttf">G_UNIT</td> + <td>Geoid units (M/F)</td> </tr><tr> - <td class="ttf">SAT_USED</td> - <td>Number of Satellites used in solution</td> + <td class="ttf">HDG</td> + <td>Heading/track made good (degrees True) (x.x)</td> </tr><tr> <td class="ttf">HDOP</td> <td>Horizontal Dilution of Precision</td> </tr><tr> - <td class="ttf">ALT</td> - <td>Antenna Altitude</td> - </tr><tr> - <td class="ttf">ALT_UNIT</td> - <td>Altitude Units (Metres/Feet)</td> + <td class="ttf">LAT</td> + <td>Latitude (llll.ll)</td> </tr><tr> - <td class="ttf">GEO</td> - <td>Geoid/Elipsoid separation</td> + <td class="ttf">LAT_REF</td> + <td>Latitude direction (N = North, S = South)</td> </tr><tr> - <td class="ttf">G_UNIT</td> - <td>Geoid units (M/F)</td> + <td class="ttf">LEAPS</td> + <td>Leap seconds or difference between GPS time scale and UTC</td> </tr><tr> - <td class="ttf">D_AGE</td> - <td>Age of last DGPS Fix</td> + <td class="ttf">LON</td> + <td>Longitude (yyyyy.yy)</td> </tr><tr> - <td class="ttf">D_REF</td> - <td>Reference ID of DGPS station</td> + <td class="ttf">LON_REF</td> + <td>Longitude direction (E = East, W = West)</td> </tr><tr> - <td class="ttf">GPSTIME</td> - <td>Time of day on GPS timescale. Hours, minutes and seconds [fraction (opt.)]. (hhmmss[.f])</td> + <td class="ttf">MAG_REF</td> + <td>Magnetic variation (E = East, W = West)</td> </tr><tr> - <td class="ttf">DD</td> - <td>Day of the month (1-31)</td> + <td class="ttf">MAG_VAR</td> + <td>Magnetic variation (degrees) (x.x)</td> </tr><tr> <td class="ttf">MM</td> <td>Month of the year (1-12)</td> </tr><tr> + <td class="ttf">POS_STAT</td> + <td>Position status. (A = Data valid, V = Data invalid)</td> + </tr><tr> + <td class="ttf">SAT_USED</td> + <td>Number of Satellites used in solution</td> + </tr><tr> + <td class="ttf">SPD</td> + <td>Speed over ground. (knots) (x.x)</td> + </tr><tr> + <td class="ttf">UTC</td> + <td>Time of day on UTC timescale. Hours, minutes and seconds [fraction (opt.)] (hhmmss[.fff])</td> + </tr><tr> <td class="ttf">YYYY</td> <td>Year</td> </tr><tr> + <td class="ttf">WEEK</td> + <td>GPS week (0-1023)</td> + </tr><tr> + <td class="ttf">WSEC</td> + <td>Seconds since start of week (0-604799)</td> + </tr><tr> + <td class="ttf">LEAP</td> + <td>GPS leap seconds, that is, seconds ahead of UTC</td> + </tr><tr> <td class="ttf">AA.BB</td> <td>Denotes the signal strength (should be < 05.00)</td> </tr><tr> @@ -181,6 +209,36 @@ </tbody></table></p> + <h4><a name="talkerids"/>NMEA Talker IDs</h4> + + <p> + GNSS receivers use a distinct talker ID for the GNSS they + process. Receivers capable of tracking different systems at the same time + can emit <tt>$GPRMC</tt> (GPS), <tt>$GLRMC</tt> (GLONASS), + <tt>$GARMC</tt> (Galileo), <tt>$GNRMC</tt> (generic/combined) and others + all in one data stream. + </p><p> + The driver supports this to a certain degree by ignoring the + talker ID on the standard sentences RMC, GLL, GGA, ZDA and ZDG. (It + possibly should not do that on the latter, but for now, that's the way + it is.) So whenever <tt>$GPRMC</tt> is mentioned in this document, + substitute any possible talker ID your receiver might emit -- it will + still match. + </p><p> + This approach has a drawback. It is easy to use for single-system + receivers, but it cannot separate the data streams for multi-system + receiver modules. It is therefore undefined which GNSS actually + provides the data, and this can lead to strange behavior. This is + especially true if the different GNSS provide very different signal + quality to the receiver; the driver is not able to cherry-pick the best + source and might actually end up in using the worst available. It is + therefore recommended to set up such a receiver to either use just a + single GNSS (which would defeat its purpose) or to emit only the + combined data, which usually has the <tt>GN</tt> talker ID defined by + the NMEA standard. + <p> + + <h4>The 'mode' byte</h4> <p> @@ -202,7 +260,7 @@ <td align="center">0</td> <td align="center">1</td> <td align="center">1</td> - <td>process <tt>$GPMRC</tt></td> + <td>process <tt>$GPRMC</tt></td> </tr><tr> <td align="center">1</td> <td align="center">2</td> @@ -259,9 +317,14 @@ <td align="center">0x100</td> <td>process <tt>$PGRMF</tt></td> </tr><tr> - <td align="center">9-15</td> + <td align="center">9</td> + <td align="center">512</td> + <td align="center">0x200</td> + <td>process <tt>$PUBX,04</tt></td> + </tr><tr> + <td align="center">10-15</td> <td align="center"></td> - <td align="center">0xFE00</td> + <td align="center">0xFC00</td> <td>reserved - leave 0</td> </tr><tr> <td align="center">16</td> @@ -269,6 +332,24 @@ <td align="center">0x10000</td> <td>Append extra statistics to the clockstats line. Details below.</td> + </tr><tr> + <td align="center">17</td> + <td align="center">131072</td> + <td align="center">0x20000</td> + <td>"Silent PPS" mode. Use the PPS channel (if enabled with + fudge flag 1) to get precise receive time stamps. + Do <em>not</em> set the PPS flag in the clock status, so the + clock is not considered as PPS peer. + </td> + </tr><tr> + <td align="center">18</td> + <td align="center">262144</td> + <td align="center">0x40000</td> + <td>Trust the date delivered via NMEA. Do this only if + you <em>really</em> trust the receiver! + See <a href="#datetrust">below</a>. <strong>Caveat:</strong> + This (hitherto undocumented) bit has moved! + </td> </tr> </tbody></table> @@ -291,7 +372,7 @@ </li></ul> The driver uses 4800 bits per second by default, but faster bitrates can be selected using bits 4 to 6 of the mode field. - <p></p> + </p> <p> <strong>Caveat:</strong> Using higher line speeds does not necessarily @@ -306,6 +387,29 @@ linespeed of 4800 bps or 9600 bps. </p> + <h4><a name="datetrust"/>About distrusting NMEA date stamps</h4> + <p> + Trusting the calendar dates delivered via NMEA is a risky thing, and by + default these dates are handled with a huge dose of skepticism. Many + receivers deliver a correct calendar date for a period of just 1024 weeks, + with a starting point baked somewhere into their firmware. Beyond that, + they warp back to the begin of their era and simply provide wrong date + information. To battle this widely observed effect, the date delivered is + by default reduced to GPS time again and then (re-)mapped according to the + base date, either the implicit value or the value set via "tos basedate". + If the receiver can <em>really</em> be trusted to deliver the right date + (which is not impossible, just more expensive for the manufacturer), then + mode bit 18 can be used to bypass the era mapping. Setting this bit is + not needed under most circumstances, and setting it with an unreliable + receiver can have severe effects. Handle with care. + </p><p> + <strong>Note:</strong> This functionality was available for some time as + undocumented feature, with a different bit value. It was moved in the + process of becoming officially acknowledged to avoid excessive scattering + of the mode bit mask. + </p> + + <h4>Monitor Data</h4> <p>The last GPS sentence that is accepted or rejected is written to the |
