summaryrefslogtreecommitdiff
path: root/driver_italk.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2015-01-10 13:14:12 -0500
committerEric S. Raymond <esr@thyrsus.com>2015-01-10 13:14:12 -0500
commit0fcb2da0c5ae748c64c3c6f09f0dd8f7998f74f2 (patch)
tree0d0a35034245df150af29ac58c100723079fd1cc /driver_italk.c
parenta950067545c52db618154994f76a5659d1be558c (diff)
downloadgpsd-0fcb2da0c5ae748c64c3c6f09f0dd8f7998f74f2.tar.gz
Almost entirely eliminate use of sats_used array.
Instead, set the used member in the satellites array directly where possible. The NMEA0183 and TSIP drivers still need a local equivalent. This changes pseudo-NMEA GSA output in several binary-protocol tests.
Diffstat (limited to 'driver_italk.c')
-rw-r--r--driver_italk.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/driver_italk.c b/driver_italk.c
index ffd3c33e..9169e128 100644
--- a/driver_italk.c
+++ b/driver_italk.c
@@ -133,26 +133,25 @@ static gps_mask_t decode_itk_prnstatus(struct gps_device_t *session,
(unsigned short)getleu16(buf, 7 + 4),
(unsigned int)getleu32(buf, 7 + 6) / 1000.0),
gpsd_zero_satellites(&session->gpsdata);
- nsv = 0;
nchan = (unsigned int)getleu16(buf, 7 + 50);
if (nchan > MAX_NR_VISIBLE_PRNS)
nchan = MAX_NR_VISIBLE_PRNS;
- for (i = st = 0; i < nchan; i++) {
+ for (i = st = nsv = 0; i < nchan; i++) {
unsigned int off = 7 + 52 + 10 * i;
unsigned short flags;
bool used;
flags = (unsigned short) getleu16(buf, off);
used = flags & PRN_FLAG_USE_IN_NAV;
- session->gpsdata.skyview[i].ss = (float)(getleu16(buf, off + 2) & 0xff);
- session->gpsdata.skyview[i].PRN = (int)getleu16(buf, off + 4) & 0xff;
- session->gpsdata.skyview[i].elevation = (int)getles16(buf, off + 6) & 0xff;
- session->gpsdata.skyview[i].azimuth = (int)getles16(buf, off + 8) & 0xff;
- session->gpsdata.skyview[i].used = used;
- if (session->gpsdata.skyview[i].PRN > 0) {
+ session->gpsdata.skyview[st].ss = (float)(getleu16(buf, off + 2) & 0xff);
+ session->gpsdata.skyview[st].PRN = (int)getleu16(buf, off + 4) & 0xff;
+ session->gpsdata.skyview[st].elevation = (int)getles16(buf, off + 6) & 0xff;
+ session->gpsdata.skyview[st].azimuth = (int)getles16(buf, off + 8) & 0xff;
+ session->gpsdata.skyview[st].used = used;
+ if (session->gpsdata.skyview[st].PRN > 0) {
st++;
if (used)
- session->sats_used[nsv++] = session->gpsdata.skyview[i].PRN;
+ nsv++;
}
}
session->gpsdata.satellites_visible = (int)st;