[Xastir-dev] Fun with gpsd... not!

Curt, WE7U curt.we7u at gmail.com
Fri Jun 18 18:23:32 EDT 2010


On Fri, 18 Jun 2010, Curt, WE7U wrote:

> In other words I'm coding to an API that just changed within the
> last few months and the API we've been using for the last six years
> is no more, yet my systems have an API that's in-between those two.
>
> I could code for three different GPSD API's:
>
> 1) Socket connect + send "R\n\r" (as we've done since 2004).
> 2) Pre-2.90 API that a lot of OS'es currently use.
> 3) Post-2.90 API.

Hah!  There's a way.  It's not the recommended way, but when did I
let that stop me?

We can do the below.  '#' are things I do as root.  '>' are things I
do as a normal user:

   # Remove older GPSD & client RPM's
   > ./configure; make; sudo make install GPSD 2.74
   # ldconfig
   # /usr/local/sbin/gpsd /dev/ttyS0
   > telnet localhost 2947
     Trying 127.0.0.1...
     Connected to localhost.
     Escape character is '^]'.
     {"class":"VERSION","release":"2.94","rev":"2010-06-18T21:38:28","proto_major":3,"proto_minor":2}

Then I type:

     ?WATCH={"enable":true,"nmea":true}

NMEA sentences start coming across.

We most likely can continue to use our current method of creating
separate threads for read & write for GPSD connections.  We'd skip
using libgps, going against the recommendations of the GPSD folks.

Considering that GPSD is such a small part of what we do I'd rather
keep to the low-level socket interface instead of re-writing all of
our GPSD client code to work with their new API.  If/when they break
their API on us again it should only require small tweaks to Xastir
to correspond.

We should be able to parse the returned strings from the connect:

     "release":"2.94"
or
     "proto_major":3,"proto_minor":2

To decide what strings to send to GPSD to get it to start spitting
out NMEA strings.  What I don't know yet is whether this will work
with GPS USB hot-plugging, GPS'es using SiRF binary or other binary
modes.

The alternative, supporting 2 or 3 protocols and rewriting a bunch
of code to use libgps, is daunting.  Particularly if we want to
support the protocol we had been using before as well.

-- 
Curt, WE7U.                         <http://www.eskimo.com/~archer>
    APRS:  Where it's at!                    <http://www.xastir.org>
   Lotto:  A tax on people who are bad at math. - unknown
Windows:  Microsoft's tax on computer illiterates. - WE7U.
The world DOES revolve around me:  I picked the coordinate system!"



More information about the Xastir-dev mailing list