# A Tour of the GPSD Internals

Mick Durkin
2.1
6 April 2010
esr Updated to match current reality, as far as it goes. Some newer parts of the codebase, notably the JSON parsing machinery and AIS support, aren't documented.
2.0
14 November 2007
md Updated to version svn revision 4420

These notes are meant as an aid to reading and understanding some of the main code files forming the gpsd daemon and its support libraries. They are not a line-by-line explanation but only pick out the important (or unusual) aspects of the code.

They do not address the many programs that are used for test purposes, the individual device driver files or any of the supplied applications that use gpsd.

This guide was written before the move to a JSON-based protocol and before AIS support was added. While the information on the rest of the code has been updated, the machinery relating to JSON and AIS is not yet documented here.

&bits.h; &driver_nmea.c; &driver_proto.c; &driver_rtcm2.c; &drivers.c; &geoid.c; &gps.h; &gpsd.c; &gpsd.h; &gpsd_dbus.c; &gpsd_report.c; &gpsdclient.c; &gpsutils.c; &isgps.c; &libgps_core.c; &libgpsd_core.c; &libgpsmm.cpp; &libgpsmm.h; &net_dgnss_dispatch.c; &net_dgpsip.c; &net_ntrip.c; &netlib.c; &ntpshm.c; &packet.c; &packet_names.h; &packet_states.h; &pseudonmea.c; &serial.c; &subframe.c; &timebase.h; &wrapup;