summaryrefslogtreecommitdiff
path: root/driver_garmin.c
diff options
context:
space:
mode:
authorMichael Tatarinov <kukabu@gmail.com>2011-10-26 14:41:08 +0400
committerEric S. Raymond <esr@thyrsus.com>2011-10-26 07:40:09 -0400
commit75faca0186f724491392342d9829725f8c5d2c9c (patch)
tree8b3239ac7df242564144f99fa156ae46c2e5a4ba /driver_garmin.c
parent648bb32aa40ee7c4e997241a10bcd413829e3343 (diff)
downloadgpsd-75faca0186f724491392342d9829725f8c5d2c9c.tar.gz
Garmin binary driver. Improve set driver mode.
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Diffstat (limited to 'driver_garmin.c')
-rw-r--r--driver_garmin.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/driver_garmin.c b/driver_garmin.c
index 4038109a..ba39d597 100644
--- a/driver_garmin.c
+++ b/driver_garmin.c
@@ -994,7 +994,8 @@ gps_mask_t garmin_ser_parse(struct gps_device_t *session)
unsigned char chksum = 0;
gps_mask_t mask = 0;
- session->gpsdata.dev.driver_mode = MODE_BINARY;
+ if (session->packet.type == GARMIN_PACKET)
+ session->gpsdata.dev.driver_mode = MODE_BINARY;
gpsd_report(LOG_RAW, "Garmin: garmin_ser_parse()\n");
if (6 > len) {
@@ -1151,6 +1152,7 @@ static void garmin_switcher(struct gps_device_t *session, int mode)
gpsd_report(LOG_IO,
"Garmin: => GPS: turn off binary %02x %02x %02x... \n",
switcher[0], switcher[1], switcher[2]);
+ session->gpsdata.dev.driver_mode = MODE_NMEA;
} else {
gpsd_report(LOG_ERROR, "Garmin: => GPS: FAILED\n");
}
@@ -1164,6 +1166,7 @@ static void garmin_switcher(struct gps_device_t *session, int mode)
} else {
(void)nmea_send(session, "$PGRMC1,1,2,1,,,,2,W,N");
(void)nmea_send(session, "$PGRMI,,,,,,,R");
+ session->gpsdata.dev.driver_mode = MODE_BINARY;
settle(); // wait 333mS, essential!
}
}