NMEA(4)                   OpenBSD Programmer's Manual                  NMEA(4)

NAME
     nmea - NMEA 0183 timedelta sensor

SYNOPSIS
     pseudo-device nmea [count]

DESCRIPTION
     This line discipline interfaces NMEA devices, such as GPS receivers at-
     tached to a serial or USB port.

     The line discipline is enabled by the following sequence:

           #include <sys/ttycom.h>
           int ldisc = NMEADISC, fildes; ...
           ioctl(fildes, TIOCSETD, &ldisc);

     The byte stream is unaltered by the line discipline which maintains a
     timedelta sensor using the NMEA data.  The timedelta sensor will appear
     as nmea* in the list of sensors and the delta (in nanoseconds) between
     the received time information and the local time can be accessed through
     the sysctl(8) interface.

NMEA SENTENCES
     The nmea line discipline decodes the following NMEA 0183 sentences:

     GPRMC    Recommended Minimum Specific GPS/TRANSIT Data.  Only the time
              and date information is extracted.  The warning indication is
              used to provide the sensor status (see below).  If the attached
              device sends the GPRMC message in the 13-field format, the oper-
              ation mode of the GPS device is reported in the sensor descrip-
              tion.  The sensor timestamp is copied from the tty timestamp if
              a device with PPS is being used and tty timestamping has been
              turned on.  Otherwise the sensor timestamp is taken when the
              initial `$' character of a message block is received from the
              NMEA device.

SENSOR STATES
     The quality of the timedelta is reported as the sensor status:

           OK          The time information is valid.  The timedelta is safe
                       to use for applications like ntpd(8).

           WARN        The attached GPS receiver has been indicating a warning
                       condition for at least the last ten minutes.  The
                       timedelta should be used with care.

           CRITICAL    tty timestamping has been turned on but there is no PPS
                       signal present or the GPS receiver indicated a warning
                       condition for at least the last twenty minutes.  Check
                       your hardware.  Some GPS units need PPS to be manually
                       turned on.

     The status of a second sensor is used to report the status of the device
     itself:

           OK          The clock is synchronized, e.g. a GPS receiver has a
                       fix.

           WARN        The device issued a warning condition, e.g. a GPS re-
                       ceiver has no fix.

SEE ALSO
     tty(4), ldattach(8), ntpd(8), sysctl(8)

HISTORY
     The nmea interface first appeared in OpenBSD 4.0.

AUTHORS
     The nmea line discipline was written by Marc Balmer
     <mbalmer@openbsd.org>.

OpenBSD 4.7                       May 6, 2008                                2
