diff options
author | Michael Tatarinov <kukabu@gmail.com> | 2011-10-26 14:41:08 +0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2011-10-26 07:40:09 -0400 |
commit | 75faca0186f724491392342d9829725f8c5d2c9c (patch) | |
tree | 8b3239ac7df242564144f99fa156ae46c2e5a4ba /driver_garmin.c | |
parent | 648bb32aa40ee7c4e997241a10bcd413829e3343 (diff) | |
download | gpsd-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.c | 5 |
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! } } |