summaryrefslogtreecommitdiff
path: root/ubx.c
diff options
context:
space:
mode:
authorChris Kuethe <chris.kuethe@gmail.com>2007-12-26 03:00:47 +0000
committerChris Kuethe <chris.kuethe@gmail.com>2007-12-26 03:00:47 +0000
commit989c737d1838cf712f92af41968c6f5f60885839 (patch)
treed11f987b3dba89b4c8622979efc47939d7bb5aa0 /ubx.c
parentb4103a561d954deb58b306802d4560f3a2e7b7b9 (diff)
downloadgpsd-989c737d1838cf712f92af41968c6f5f60885839.tar.gz
fix broken satellite use decoder
Diffstat (limited to 'ubx.c')
-rw-r--r--ubx.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/ubx.c b/ubx.c
index b27e9436..eb1bdb6d 100644
--- a/ubx.c
+++ b/ubx.c
@@ -152,7 +152,7 @@ ubx_msg_nav_timegps(struct gps_device_t *session, unsigned char *buf, size_t dat
static gps_mask_t
ubx_msg_nav_svinfo(struct gps_device_t *session, unsigned char *buf, size_t data_len)
{
- unsigned int i, tow, st, nchan, nsv;;
+ unsigned int i, tow, nchan, nsv;;
if (data_len < 152 ) {
gpsd_report(LOG_PROG, "runt svinfo (datalen=%d)\n", data_len);
@@ -169,28 +169,21 @@ ubx_msg_nav_svinfo(struct gps_device_t *session, unsigned char *buf, size_t data
}
/*@ -charint @*/
gpsd_zero_satellites(&session->gpsdata);
- st = nsv = 0;
+ nsv = 0;
for (i = 0; i < nchan; i++) {
int off = 8 + 12 * i;
- bool good;
- session->gpsdata.PRN[st] = (int)getub(buf, off+1);
+ session->gpsdata.PRN[i] = (int)getub(buf, off+1);
+ session->gpsdata.ss[i] = (int)getub(buf, off+4);
+ session->gpsdata.elevation[i] = (int)getsb(buf, off+5);
+ session->gpsdata.azimuth[i] = (int)getsw(buf, off+6);
/*@ -predboolothers */
if (getub(buf, off+2) & 0x01)
- session->gpsdata.used[st] = session->gpsdata.PRN[st];
-
+ session->gpsdata.used[nsv++] = session->gpsdata.PRN[i];
/*@ +predboolothers */
- session->gpsdata.ss[st] = (int)getub(buf, off+4);
- session->gpsdata.elevation[st] = (int)getsb(buf, off+5);
- session->gpsdata.azimuth[st] = (int)getsw(buf, off+6);
- good = session->gpsdata.PRN[st]!=0 &&
- session->gpsdata.azimuth[st]!=0 &&
- session->gpsdata.elevation[st]!=0 &&
- (int)getub(buf, off+11)!=0; /* quality indicator. 0 = channel idle */
- if (good!=0)
- st++;
}
- session->gpsdata.satellites = (int)st;
- return SATELLITE_SET;
+ session->gpsdata.satellites = (int)nchan;
+ session->gpsdata.satellites_used = nsv;
+ return SATELLITE_SET | USED_SET;
}
static void