[][src]Crate gpsd_proto

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

Device information.

DeviceInfo

Single device information as reported by gpsd.

Devices

Device information (i.e. device enumeration).

Pps

This message is emitted each time the daemon sees a valid PPS (Pulse Per Second) strobe from a device.

Satellite

Detailed satellite information.

Sky

Satellites information.

Tpv

GPS position.

Version

gpsd ships a VERSION response to each client when the client first connects to it.

Watch

Watch response. Elicits a report of per-subscriber policy.

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..

UnifiedResponse

All known gpsd responses (handshake + normal operation).

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.