<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article PUBLIC
   "-//OASIS//DTD DocBook XML V4.1.2//EN"
   "docbook/docbookx.dtd" [
<!ENTITY bits.h                   SYSTEM "explan_bits.h.xml">
<!ENTITY dbusexport.c             SYSTEM "explan_dbusexport.c.xml">
<!ENTITY driver_nmea.c            SYSTEM "explan_driver_nmea.c.xml">
<!ENTITY driver_proto.c           SYSTEM "explan_driver_proto.c.xml">
<!ENTITY driver_rtcm2.c           SYSTEM "explan_driver_rtcm2.c.xml">
<!ENTITY drivers.c                SYSTEM "explan_drivers.c.xml">
<!ENTITY geoid.c                  SYSTEM "explan_geoid.c.xml">
<!ENTITY gps.h                    SYSTEM "explan_gps.h.xml">
<!ENTITY gpsd.c                   SYSTEM "explan_gpsd.c.xml">
<!ENTITY gpsd.h                   SYSTEM "explan_gpsd.h.xml">
<!ENTITY gpsd_log.c               SYSTEM "explan_gpsd_log.c.xml">
<!ENTITY gpsdclient.c             SYSTEM "explan_gpsdclient.c.xml">
<!ENTITY gpsutils.c               SYSTEM "explan_gpsutils.c.xml">
<!ENTITY isgps.c                  SYSTEM "explan_isgps.c.xml">
<!ENTITY libgps_core.c            SYSTEM "explan_libgps_core.c.xml">
<!ENTITY libgpsd_core.c           SYSTEM "explan_libgpsd_core.c.xml">
<!ENTITY libgpsmm.cpp             SYSTEM "explan_libgpsmm.cpp.xml">
<!ENTITY libgpsmm.h               SYSTEM "explan_libgpsmm.h.xml">
<!ENTITY net_dgnss_dispatch.c     SYSTEM "explan_net_dgnss_dispatch.c.xml">
<!ENTITY net_dgpsip.c             SYSTEM "explan_net_dgpsip.c.xml">
<!ENTITY net_ntrip.c              SYSTEM "explan_net_ntrip.c.xml">
<!ENTITY netlib.c                 SYSTEM "explan_netlib.c.xml">
<!ENTITY ntpshm.c                 SYSTEM "explan_ntpshm.c.xml">
<!ENTITY packet.c                 SYSTEM "explan_packet.c.xml">
<!ENTITY packet_names.h           SYSTEM "explan_packet_names.h.xml">
<!ENTITY packet_states.h          SYSTEM "explan_packet_states.h.xml">
<!ENTITY pseudonmea.c             SYSTEM "explan_pseudonmea.c.xml">
<!ENTITY serial.c                 SYSTEM "explan_serial.c.xml">
<!ENTITY subframe.c               SYSTEM "explan_subframe.c.xml">

<!ENTITY wrapup                   SYSTEM "explan_wrapup.xml">
]>
<article>
<title>A Tour of the GPSD Internals</title>
<articleinfo>
<author>
  <firstname>Mick</firstname>
  <surname>Durkin</surname>
</author>
<revhistory>
   <revision>
      <revnumber>2.2</revnumber>
      <date>25 Jan 2011</date>
      <authorinitials>esr</authorinitials>
      <revremark>The raw_hook member is gone.</revremark>
   </revision>
   <revision>
      <revnumber>2.1</revnumber>
      <date>6 April 2010</date>
      <authorinitials>esr</authorinitials>
      <revremark>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.</revremark>
   </revision>
   <revision>
      <revnumber>2.0</revnumber>
      <date>14 November 2007</date>
      <authorinitials>md</authorinitials>
      <revremark>Updated to version svn revision 4420</revremark>
   </revision>
</revhistory>

<abstract>
<para>These notes are meant as an aid to reading and understanding
some of the main code files forming the
<application>gpsd</application> 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.</para><para>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
<application>gpsd</application>.</para>

<para>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.</para>
</abstract>

</articleinfo>

&bits.h;
&dbusexport.c;
&driver_nmea.c;
&driver_proto.c;
&driver_rtcm2.c;
&drivers.c;
&geoid.c;
&gps.h;
&gpsd.c;
&gpsd.h;
&gpsd_log.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;

&wrapup;
</article>
