summaryrefslogtreecommitdiff
path: root/zodiac.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2006-08-16 19:54:18 +0000
committerEric S. Raymond <esr@thyrsus.com>2006-08-16 19:54:18 +0000
commit3a0977fc157756bd3cbc087afba892500036f855 (patch)
treee0aad7ce5cadd8e41640ddc1aeb8cf6fc4bddc07 /zodiac.c
parenta4a363f57b4873899d6c1199fd25e35136a6fe24 (diff)
downloadgpsd-3a0977fc157756bd3cbc087afba892500036f855.tar.gz
Jerome Cornet's cleaner fix for the Earthmate.
Diffstat (limited to 'zodiac.c')
-rw-r--r--zodiac.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/zodiac.c b/zodiac.c
index 1b9d4217..4182b2c9 100644
--- a/zodiac.c
+++ b/zodiac.c
@@ -350,7 +350,22 @@ static gps_mask_t zodiac_analyze(struct gps_device_t *session)
if (session->packet_type != ZODIAC_PACKET) {
gpsd_report(2, "zodiac_analyze packet type %d\n",session->packet_type);
- return 0;
+ // Wrong packet type ?
+ // Maybe find a trigger just in case it's an Earthmate
+ gpsd_report(9, "Is this a trigger: %s ?\n", (char*)session->outbuffer);
+ struct gps_type_t **dp;
+
+ for (dp = gpsd_drivers; *dp; dp++) {
+ char *trigger = (*dp)->trigger;
+
+ if (trigger!=NULL && strncmp((char *)session->outbuffer, trigger, strlen(trigger))==0 && isatty(session->gpsdata.gps_fd)!=0) {
+ gpsd_report(2, "found %s.\n", trigger);
+
+ (void)gpsd_switch_driver(session, (*dp)->typename);
+ return 0;
+ }
+ }
+ return 0;
}
buf[0] = '\0';