diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2012-05-09 20:03:44 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2012-05-09 20:03:44 -0400 |
commit | 398094402837f5deb31bd8e479fc04c5f27c1edf (patch) | |
tree | 8b29d2e8c966175b68ac8fbfb222d03300261953 | |
parent | 1b3599842bda43883da3730a8f50620f13957c31 (diff) | |
parent | 470b53e846f13ab1c660cd05fe901d1e801df4e3 (diff) | |
download | gpsd-398094402837f5deb31bd8e479fc04c5f27c1edf.tar.gz |
Merge branch 'master' of git.sv.gnu.org:/srv/git/gpsd
-rw-r--r-- | driver_garmin.c | 8 | ||||
-rw-r--r-- | gpsd.xml | 2 | ||||
-rw-r--r-- | subframe.c | 12 |
3 files changed, 11 insertions, 11 deletions
diff --git a/driver_garmin.c b/driver_garmin.c index ba39d597..1bddabb1 100644 --- a/driver_garmin.c +++ b/driver_garmin.c @@ -908,10 +908,7 @@ static bool garmin_usb_detect(struct gps_device_t *session UNUSED) #ifdef HAVE_LIBUSB if (!is_usb_device(session->gpsdata.dev.path, 0x091e, 0x0003)) return false; -#else - return false; -#endif /* HAVE_LIBUSB */ - /*@-unreachable@*/ + if (!gpsd_set_raw(session)) { gpsd_report(LOG_ERROR, "Garmin: garmin_usb_detect: error changing port attributes: %s\n", @@ -937,6 +934,9 @@ static bool garmin_usb_detect(struct gps_device_t *session UNUSED) return true; } #else + return false; +#endif /* HAVE_LIBUSB */ +#else return false; #endif /* __linux__ || S_SPLINT_S */ } @@ -304,7 +304,7 @@ passed to local clients.</para> <listitem> <para>A URI with the prefix "nmea2000://", followed by a CAN devicename. Only Linux socket CAN interfaces are supported. The -interface must be configured to receive CAN messages at +interface must be configured to receive CAN messages before <application>gpsd</application> can be started. If there is more then one unit on the CAN bus that provides GPS data, <application>gpsd</application> chooses the unit from which a GPS message @@ -668,10 +668,10 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, sv = -1; /* current leap seconds */ - subp->sub4_18.alpha0 = (int8_t)((words[2] >> 16) & 0x0000FF); + subp->sub4_18.alpha0 = (int8_t)((words[2] >> 8) & 0x0000FF); subp->sub4_18.d_alpha0 = pow(2.0, -30) * (int)subp->sub4_18.alpha0; - subp->sub4_18.alpha1 = (int8_t)((words[2] >> 8) & 0x0000FF); - subp->sub4_18.d_alpha1 = pow(2.0, -27) * (int)subp->sub4_18.alpha2; + subp->sub4_18.alpha1 = (int8_t)((words[2] >> 0) & 0x0000FF); + subp->sub4_18.d_alpha1 = pow(2.0, -27) * (int)subp->sub4_18.alpha1; subp->sub4_18.alpha2 = (int8_t)((words[3] >> 16) & 0x0000FF); subp->sub4_18.d_alpha2 = pow(2.0, -24) * (int)subp->sub4_18.alpha2; subp->sub4_18.alpha3 = (int8_t)((words[3] >> 8) & 0x0000FF); @@ -680,7 +680,7 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, subp->sub4_18.beta0 = (int8_t)((words[3] >> 0) & 0x0000FF); subp->sub4_18.d_beta0 = pow(2.0, 11) * (int)subp->sub4_18.beta0; subp->sub4_18.beta1 = (int8_t)((words[4] >> 16) & 0x0000FF); - subp->sub4_18.d_beta1 = pow(2.0, 14) * (int)subp->sub4_18.beta2; + subp->sub4_18.d_beta1 = pow(2.0, 14) * (int)subp->sub4_18.beta1; subp->sub4_18.beta2 = (int8_t)((words[4] >> 8) & 0x0000FF); subp->sub4_18.d_beta2 = pow(2.0, 16) * (int)subp->sub4_18.beta2; subp->sub4_18.beta3 = (int8_t)((words[4] >> 0) & 0x0000FF); @@ -691,13 +691,13 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, subp->sub4_18.d_A1 = pow(2.0,-50) * subp->sub4_18.A1; subp->sub4_18.A0 = (int32_t)((words[6] >> 0) & 0xFFFFFF); subp->sub4_18.A0 <<= 8; - subp->sub4_18.A0 |= ((words[7] >> 16) & 0x00FFFF); + subp->sub4_18.A0 |= ((words[7] >> 16) & 0x0000FF); subp->sub4_18.d_A0 = pow(2.0,-30) * subp->sub4_18.A0; /* careful WN is 10 bits, but WNt is 8 bits! */ /* WNt (Week Number of LSF) */ subp->sub4_18.tot = ((words[7] >> 8) & 0x0000FF); - subp->sub4_18.d_tot = pow(2.0,12) * subp->sub4_18.d_tot; + subp->sub4_18.d_tot = pow(2.0,12) * subp->sub4_18.tot; subp->sub4_18.WNt = ((words[7] >> 0) & 0x0000FF); subp->sub4_18.leap = (int8_t)((words[8] >> 16) & 0x0000FF); subp->sub4_18.WNlsf = ((words[8] >> 8) & 0x0000FF); |