summaryrefslogtreecommitdiff
path: root/driver_italk.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-09-30 23:31:04 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-09-30 23:31:04 +0000
commit45712f8a11fe495494b2f9beb84c50c77dc77c10 (patch)
treef64b4308d18139f22c2fff9a89764edb924ac7c6 /driver_italk.c
parent97b9548cff261e13a5b592d31add94631ff4dbc9 (diff)
downloadgpsd-45712f8a11fe495494b2f9beb84c50c77dc77c10.tar.gz
Adapt some drivers to use the new LOG_DATA level. All regression tests pass.
Diffstat (limited to 'driver_italk.c')
-rw-r--r--driver_italk.c85
1 files changed, 58 insertions, 27 deletions
diff --git a/driver_italk.c b/driver_italk.c
index 47630e79..14f444fd 100644
--- a/driver_italk.c
+++ b/driver_italk.c
@@ -101,6 +101,22 @@ static gps_mask_t decode_itk_navfix(struct gps_device_t *session, unsigned char
session->gpsdata.status = STATUS_FIX;
}
+ gpsd_report(LOG_DATA, "NAV_FIX: time=%.2f, lat=%.2f lon=.2%f alt=%.f speed=%.2f track=%.2f climb=%.2f mode=%d status=%d gdop=.2%f pdop=.2%f hdop=.2%f vdop=.2%f tdop=.2%f mask=%s\n",
+ session->gpsdata.fix.time,
+ session->gpsdata.fix.latitude,
+ session->gpsdata.fix.longitude,
+ session->gpsdata.fix.altitude,
+ session->gpsdata.fix.speed,
+ session->gpsdata.fix.track,
+ session->gpsdata.fix.climb,
+ session->gpsdata.fix.mode,
+ session->gpsdata.status,
+ session->gpsdata.dop.gdop,
+ session->gpsdata.dop.pdop,
+ session->gpsdata.dop.hdop,
+ session->gpsdata.dop.vdop,
+ session->gpsdata.dop.tdop,
+ gpsd_maskdump(mask));
return mask;
}
@@ -109,41 +125,53 @@ static gps_mask_t decode_itk_prnstatus(struct gps_device_t *session, unsigned ch
unsigned int i, tow, nsv, nchan, st;
unsigned short gps_week;
double t;
+ gps_mask_t mask;
if (len < 62){
gpsd_report(LOG_PROG, "ITALK: runt PRN_STATUS (len=%zu)\n", len);
- return ERROR_SET;
+ mask = ERROR_SET;
}
-
- gps_week = getleuw(buf, 7 + 4);
- tow = getleul(buf, 7 + 6);
- t = gpstime_to_unix((int)gps_week, tow/1000.0) - session->context->leap_seconds;
- session->gpsdata.sentence_time = session->gpsdata.fix.time = t;
-
- gpsd_zero_satellites(&session->gpsdata);
- nsv = 0;
- nchan = (unsigned int)getleuw(buf, 7 +50);
- if (nchan > MAX_NR_VISIBLE_PRNS)
+ else
+ {
+ gps_week = getleuw(buf, 7 + 4);
+ tow = getleul(buf, 7 + 6);
+ t = gpstime_to_unix((int)gps_week, tow/1000.0) - session->context->leap_seconds;
+ session->gpsdata.sentence_time = session->gpsdata.fix.time = t;
+
+ gpsd_zero_satellites(&session->gpsdata);
+ nsv = 0;
+ nchan = (unsigned int)getleuw(buf, 7 +50);
+ if (nchan > MAX_NR_VISIBLE_PRNS)
nchan = MAX_NR_VISIBLE_PRNS;
- for (i = st = 0; i < nchan; i++) {
- unsigned int off = 7+ 52 + 10 * i;
- unsigned short flags;
-
- flags = getleuw(buf, off);
- session->gpsdata.ss[i] = (float)(getleuw(buf, off+2)&0xff);
- session->gpsdata.PRN[i] = (int)getleuw(buf, off+4)&0xff;
- session->gpsdata.elevation[i] = (int)getlesw(buf, off+6)&0xff;
- session->gpsdata.azimuth[i] = (int)getlesw(buf, off+8)&0xff;
- if (session->gpsdata.PRN[i]){
- st++;
- if (flags & PRN_FLAG_USE_IN_NAV)
- session->gpsdata.used[nsv++] = session->gpsdata.PRN[i];
+ for (i = st = 0; i < nchan; i++) {
+ unsigned int off = 7+ 52 + 10 * i;
+ unsigned short flags;
+
+ flags = getleuw(buf, off);
+ session->gpsdata.ss[i] = (float)(getleuw(buf, off+2)&0xff);
+ session->gpsdata.PRN[i] = (int)getleuw(buf, off+4)&0xff;
+ session->gpsdata.elevation[i] = (int)getlesw(buf, off+6)&0xff;
+ session->gpsdata.azimuth[i] = (int)getlesw(buf, off+8)&0xff;
+ if (session->gpsdata.PRN[i]){
+ st++;
+ if (flags & PRN_FLAG_USE_IN_NAV)
+ session->gpsdata.used[nsv++] = session->gpsdata.PRN[i];
+ }
}
+ session->gpsdata.satellites = (int)st;
+ session->gpsdata.satellites_used = (int)nsv;
+ mask = USED_SET | SATELLITE_SET | TIME_SET;;
+
+ // FIXME: should dump skyview here as well
+ gpsd_report(LOG_DATA,
+ "PRN_STATUS: time=%.2f reported%d used=%d mask=%s\n",
+ session->gpsdata.fix.time,
+ session->gpsdata.satellites,
+ session->gpsdata.satellites_used,
+ gpsd_maskdump(mask));
}
- session->gpsdata.satellites = (int)st;
- session->gpsdata.satellites_used = (int)nsv;
- return USED_SET | SATELLITE_SET | TIME_SET;
+ return mask;
}
static gps_mask_t decode_itk_utcionomodel(struct gps_device_t *session, unsigned char *buf, size_t len)
@@ -172,6 +200,9 @@ static gps_mask_t decode_itk_utcionomodel(struct gps_device_t *session, unsigned
t = gpstime_to_unix((int)gps_week, tow/1000.0) - session->context->leap_seconds;
session->gpsdata.sentence_time = session->gpsdata.fix.time = t;
+ gpsd_report(LOG_DATA,
+ "UTC_IONO_MODEL: time=%.2f mask=TIME_SET\n",
+ session->gpsdata.fix.time);
return TIME_SET;
}