Gypsy - A GPS Multiplexing Daemon

Why use Gypsy?

Put simply, GPS devices can only be used by one application at a time. That may not cause a problem if only one application wants to know location data, but in a modern desktop the possibilities for location-aware applications are numerous and if only one of those applications is able to talk to the GPS device at one time, it causes a problem.

Gypsy solves this problem by standing in between the GPS device and the location-aware applications. Gypsy talks to the GPS device and informs the location-aware applications of the GPS details. It is a GPS multiplexing daemon.

Another reason is because the format of the messages that the GPS sends out are tricky to parse, and it makes sense for one program to parse them and inform other clients in a more sensible format, rather than for every location-aware program to contain their own private copy of NMEA parsing code.

How Gypsy Works

The Gypsy daemon program is started at system boot. It connects to D-Bus' system bus and waits. When a client application tells it to connect to a GPS device it connects and parses the NMEA sentences generated by the GPS device and it emits signals onto the system bus. Applications can choose to listen to whatever signals they are interested in and ignore the rest. Gypsy emits fine grained signals so that applications which are only interested in the location signals do not have to know about the course signals or the satellite signals, for example.

Gypsy's Design

Gypsy is designed to by usable on all manner of systems, from low power embedded devices (such as Nokia N800) up to full blown high powered desktop systems. As it only emits messages when data has changed applications are woken up less, keeping power consumption to a minimum.

Gypsy also includes libgypsy, a GObject based C wrapper for the D-Bus API making writing clients in C very simple, although any language with D-Bus bindings can be used to write a Gypsy client. (see simple-gps-python.py in the Gypsy sources for a python example)

Gypsy was designed to fix the numerous design flaws found in GPSD.

Requirements

Gypsy uses the following:

Documentation

Downloading

Tarball - http://folks.o-hand.com/iain/gypsy/releases/
SVN - svn co http://svn.o-hand.com/repos/gypsy

Packages

Debian Sid/Ubuntu Feisty - http://www.burtonini.com/blog/computers/gypsy-2007-11-12-16-10

Bug Tracking

Gypsy uses Bugzilla to track its bugs.