gpsd-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gpsd-users] Earthmate and the Zodiac Driver


From: Derrick Brashear
Subject: Re: [gpsd-users] Earthmate and the Zodiac Driver
Date: Mon, 9 Jan 2012 20:43:25 -0500

On Mon, Jan 9, 2012 at 7:25 PM, Eric S. Raymond <address@hidden> wrote:
> Scott Nolde <address@hidden>:
>> gpsd:PROG: selecting Generic NMEA driver...
>> gpsd:PROG: => Probing for FV-18
>> gpsd:WARN: unknown sentence: "EARTHA"
>> gpsd:PROG: found trigger string EARTHA.
>> gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) 
>> called...
>> The Earthmate reliably worked before the 3.x change.
>
> Yeah.  It's switching drivers all right, so the recognizer is working...
> but it's not staying locked on. I can't tell why from the output.
>
> Unfortunately, the old Earthmate is one of a handful of devices we
> support that cannot be simulated with a canned test load (that's due
> to the EARTHA handshake).

so your "test load" file is a pipe which has at the other end a perl
script. But I'm getting ahead of myself.

> If it were simulable, the change that broke it would not have gotten
> past our regression tests.  As it is, the only way to isolate the
> fault is to test with live hardware.

I doubt it. Sadly my Earthmate is dead. It could probably be
recovered, but again, I'm ahead of myself.


gpsd:PROG: found trigger string EARTHA.
gpsd:PROG: switch_driver(Delorme EarthMate (pre-2003, Zodiac chipset)) called...

gpsd:PROG: selecting Delorme EarthMate (pre-2003, Zodiac chipset) driver...

gpsd:DATA: packet from /dev/cuad0 with {ONLINE|DEVICEID|PACKET|DRIVER}
gpsd:PROG: device 0 (fd=7, path /dev/cuad0) already active.
gpsd:PROG: Changed mask: {ONLINE|DEVICEID|PACKET|DRIVER} with reliable
cycle detection


gpsd:PROG: switch_driver(Generic NMEA) called..

so when you get "selecting Delorme EarthMate", the loss would seem to
be immediate.

static void earthmate_event_hook(struct gps_device_t *session, event_t event)
contains:
    if (event == event_identified) {
        (void)gpsd_write(session, "EARTHA\r\n", 8);
        (void)usleep(10000);
        (void)gpsd_switch_driver(session, "Zodiac Binary");
    }

which would tell you something interesting:
    gpsd_report(LOG_PROG, "switch_driver(%s) called...\n", type_name);

But we never see a switch to Zodiac.

So you don't need him. You don't even need a perl script. Your test
input is a file containing a bunch of
EARTHA
strings. Until you see "selecting Zodiac Binary", he's not going to be
happy regardless.


Given in order to get there you would have had to have seen an
accepted packet first:
        gpsd_report(LOG_RAW + 3, "Accepted packet on %s.\n",
                    session->gpsdata.dev.path);
which is gpsd_poll which is at the start of gpsd's event loop, but the
gpsd:DATA: packet from /dev/cuad0 with {ONLINE|DEVICEID|PACKET|DRIVER}
call is further down in that loop, something between that and the
completion of that loop is the presumably the problem.


-- 
Derrick
the guy that wrote the Zodiac support



reply via email to

[Prev in Thread] Current Thread [Next in Thread]