diff options
author | Gary E. Miller <gem@rellim.com> | 2013-11-15 10:48:31 -0800 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2013-11-15 10:48:31 -0800 |
commit | 66e1374d0574c1e0db66c54b0cb579c7c4d13eb7 (patch) | |
tree | a6e356d4d14e8e31b1090328a470938566373587 | |
parent | 5d91b10b27a1b56bc7515aef14d5f67b8212ac94 (diff) | |
download | gpsd-66e1374d0574c1e0db66c54b0cb579c7c4d13eb7.tar.gz |
Collect all the SiRF settling time constants into one define.
Also make it a lot longer than before. The SiRF driver should
also be listening for the ACK/NACKs.
-rw-r--r-- | driver_sirf.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/driver_sirf.c b/driver_sirf.c index 20baf445..096e3921 100644 --- a/driver_sirf.c +++ b/driver_sirf.c @@ -43,6 +43,9 @@ #include "bits.h" #if defined(SIRF_ENABLE) && defined(BINARY_ENABLE) +/* arbitrary back off time to not overload the SiRF, 330 too short for + * SiRF IV. We should instead be waiting for the ACK, at least on SiRF IV */ +#define SIRF_SETTLE 30330 #define HI(n) ((n) >> 8) #define LO(n) ((n) & 0xff) @@ -378,7 +381,7 @@ static void sirfbin_mode(struct gps_device_t *session, int mode) session->gpsdata.dev.baudrate, 9 - session->gpsdata.dev.stopbits, session->gpsdata.dev.stopbits, parity); - (void)usleep(333); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ } session->back_to_nmea = false; } @@ -1365,78 +1368,78 @@ static void sirfbin_event_hook(struct gps_device_t *session, event_t event) (void)nmea_send(session, "$PSRF100,0,%d,8,1,0", session->gpsdata.dev.baudrate); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ } gpsd_report(session->context->debug, LOG_PROG, "SiRF: Probing for firmware version...\n"); (void)sirf_write(session, versionprobe); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Requesting navigation parameters...\n"); (void)sirf_write(session, navparams); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ #ifdef RECONFIGURE_ENABLE gpsd_report(session->context->debug, LOG_PROG, "SiRF: Requesting periodic ecef reports...\n"); (void)sirf_write(session, requestecef); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Requesting periodic tracker reports...\n"); (void)sirf_write(session, requesttracker); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Setting DGPS control to use SBAS...\n"); (void)sirf_write(session, dgpscontrol); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Setting SBAS to auto/integrity mode...\n"); (void)sirf_write(session, sbasparams); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Enabling PPS message...\n"); (void)sirf_write(session, enablemid52); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ if (session->gpsdata.dev.baudrate >= 38400) { /* some USB devices are also too slow, no way to tell which ones */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: Enabling subframe transmission...\n"); (void)sirf_write(session, enablesubframe); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ } /* disable some MIDs. we do not decode it, so don't send it */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: unset MID 7...\n"); putbyte(unsetmidXX, 6, 0x11); (void)sirf_write(session, unsetmidXX); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: unset MID 28...\n"); putbyte(unsetmidXX, 6, 0x1c); (void)sirf_write(session, unsetmidXX); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: unset MID 29...\n"); putbyte(unsetmidXX, 6, 0x1d); (void)sirf_write(session, unsetmidXX); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: unset MID 30...\n"); putbyte(unsetmidXX, 6, 0x1e); (void)sirf_write(session, unsetmidXX); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ gpsd_report(session->context->debug, LOG_PROG, "SiRF: unset MID 31...\n"); putbyte(unsetmidXX, 6, 0x1f); (void)sirf_write(session, unsetmidXX); - (void)usleep(3330); /* guessed settling time */ + (void)usleep(SIRF_SETTLE); /* guessed settling time */ #endif /* RECONFIGURE_ENABLE */ } |