Crate gpsd_proto

source ·
Expand description

The gpsd_proto module contains types and functions to connect to gpsd to get GPS coordinates and satellite information.

gpsd_proto uses a plain TCP socket to connect to gpsd, reads and writes JSON messages. The main motivation to create this crate was independence from C libraries, like libgps (provided by gpsd) to ease cross compiling.

A example demo application is provided in the example sub directory. Check the repository for up to date sample code.

Testing

gpsd_proto has been tested against gpsd version 3.17 on macOS with a GPS mice (Adopt SkyTraQ Venus 8) and the iOS app GPS2IP.

Feel free to report any other supported GPS by opening a GitHub issue.

Reference documentation

Important reference documentation of gpsd are the JSON protocol and the client HOWTO.

Development notes

Start gpsd with a real GPS device:

/usr/local/sbin/gpsd -N -D4 /dev/tty.SLAB_USBtoUART

Or start gpsd with a TCP stream to a remote GPS:

/usr/local/sbin/gpsd -N -D2 tcp://192.168.177.147:11123

Test the connection to gpsd with telnet localhost 2947 and send the string:

?WATCH={"enable":true,"json":true};

Structs

  • Device information.
  • Single device information as reported by gpsd.
  • Device information (i.e. device enumeration).
  • Pseudorange noise report.
  • This message is emitted each time the daemon sees a valid PPS (Pulse Per Second) strobe from a device.
  • Detailed satellite information.
  • Satellites information.
  • GPS position.
  • gpsd ships a VERSION response to each client when the client first connects to it.
  • Watch response. Elicits a report of per-subscriber policy.

Enums

Constants

Functions

  • Get one payload entry from gpsd.
  • Performs the initial handshake with gpsd.