summaryrefslogtreecommitdiff
path: root/driver_garmin.c
diff options
context:
space:
mode:
authorMichael Tatarinov <kukabu@gmail.com>2011-10-12 13:21:41 +0400
committerEric S. Raymond <esr@thyrsus.com>2011-10-12 13:21:35 -0400
commitdd91544265d582bcae08d5cb22d180a30c923526 (patch)
treeaadf3ee75f830e49e07335b649cd274530566bb8 /driver_garmin.c
parent15e6cf26d92ce0fba20072e4d6f6599ceaeff676 (diff)
downloadgpsd-dd91544265d582bcae08d5cb22d180a30c923526.tar.gz
Garmin serial driver. Don't emit SKY if satellites aren't seen.
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Diffstat (limited to 'driver_garmin.c')
-rw-r--r--driver_garmin.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/driver_garmin.c b/driver_garmin.c
index af5bdbe8..39fef2f3 100644
--- a/driver_garmin.c
+++ b/driver_garmin.c
@@ -530,6 +530,7 @@ gps_mask_t PrintSERPacket(struct gps_device_t *session, unsigned char pkt_id,
gpsd_report(LOG_PROG, "Garmin: SAT Data Sz: %d\n", pkt_len);
sats = (cpo_sat_data *) buf;
+ session->gpsdata.satellites_visible = 0;
session->gpsdata.satellites_used = 0;
memset(session->gpsdata.used, 0, sizeof(session->gpsdata.used));
gpsd_zero_satellites(&session->gpsdata);
@@ -552,8 +553,8 @@ gps_mask_t PrintSERPacket(struct gps_device_t *session, unsigned char pkt_id,
// Garmin does not document this. snr is in dB*100
// Known, but not seen satellites have a dB value of -1*100
session->gpsdata.ss[j] = (float)(GPSD_LE16TOH(sats->snr) / 100.0);
- if (session->gpsdata.ss[j] < 0.0) {
- session->gpsdata.ss[j] = 0.0;
+ if (session->gpsdata.ss[j] == -1) {
+ continue;
}
// FIX-ME: Garmin documents this, but Daniel Dorau
// <daniel.dorau@gmx.de> says the behavior on his GPSMap60CSX
@@ -568,7 +569,10 @@ gps_mask_t PrintSERPacket(struct gps_device_t *session, unsigned char pkt_id,
}
session->gpsdata.skyview_time = NAN;
- mask |= SATELLITE_SET | USED_IS;
+ if (session->gpsdata.satellites_visible > 0)
+ mask |= SATELLITE_SET;
+ if (session->gpsdata.satellites_used > 0)
+ mask |= USED_IS;
gpsd_report(LOG_DATA,
"Garmin: SAT_DATA: visible=%d used=%d\n",
session->gpsdata.satellites_visible,