diff options
author | Gary E. Miller <gem@rellim.com> | 2009-11-17 19:59:37 +0000 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2009-11-17 19:59:37 +0000 |
commit | adf6a6c2f107e95e9691ebd47925f2a8f0733630 (patch) | |
tree | 6c5103537b2376665cd0c86eca439d85e7f8390e /driver_sirf.c | |
parent | 9c9497981cc554c218d55ed15aae9217b9a159b9 (diff) | |
download | gpsd-adf6a6c2f107e95e9691ebd47925f2a8f0733630.tar.gz |
Make 'gpsctl -b' work for SiRF binary.
Very ugly, proof of concept. Gimmme another patch or two
before cleaning it up.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r-- | driver_sirf.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/driver_sirf.c b/driver_sirf.c index 3c85d289..b0ae1f0e 100644 --- a/driver_sirf.c +++ b/driver_sirf.c @@ -210,13 +210,20 @@ static bool sirf_to_nmea(int ttyfd, speed_t speed) return (sirf_write(ttyfd, msg)); } -static void sirfbin_mode(struct gps_device_t *session, int mode) +void sirfbin_mode(struct gps_device_t *session, int mode) { if (mode == MODE_NMEA) { (void)sirf_to_nmea(session->gpsdata.gps_fd,session->gpsdata.dev.baudrate); - } else { - session->back_to_nmea = false; + } else if (mode == MODE_BINARY) { + (void)nmea_send(session, + "$PSRF100,0,%d,%d,%d,0", + session->gpsdata.dev.baudrate, + 9-session->gpsdata.dev.stopbits, + session->gpsdata.dev.stopbits); + (void)usleep(333); /* guessed settling time */ + session->gpsdata.dev.driver_mode = MODE_BINARY; } + session->back_to_nmea = false; } #endif /* ALLOW_RECONFIGURE */ |