Crate gpsd_proto[][src]

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

DeviceInfo

Simple device information as reported by gpsd

Satellite

Detailed satellite information.

Enums

GpsdError

Errors during handshake or data acquisition.

Mode

Type of GPS fix

ResponseData

Responses from gpsd after handshake (i.e. the payload)

ResponseHandshake

Responses from gpsd during handshake

Constants

ENABLE_WATCH_CMD

Command to enable watch

PROTO_MAJOR_MIN

Minimum supported version of gpsd.

Functions

get_data

Get one payload entry from gpsd.

handshake

Performs the initial handshake with gpsd.