summaryrefslogtreecommitdiff
path: root/driver_tsip.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-01-17 10:56:32 -0500
committerEric S. Raymond <esr@thyrsus.com>2011-01-17 10:56:32 -0500
commitf12d1b2a532f5540ab43309a8c5e658329f5df71 (patch)
tree2d433bf85f16f538b409183a3e6ea2f25289609b /driver_tsip.c
parent3307f9c53771f39873aad7ceec1ff09bd100b108 (diff)
downloadgpsd-f12d1b2a532f5540ab43309a8c5e658329f5df71.tar.gz
Introduce GPS_TIME_VALID flag for GPS time validation.
Diffstat (limited to 'driver_tsip.c')
-rw-r--r--driver_tsip.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/driver_tsip.c b/driver_tsip.c
index 76fb636f..e96cff35 100644
--- a/driver_tsip.c
+++ b/driver_tsip.c
@@ -192,6 +192,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
session->context->leap_seconds = (int)round(f2);
session->context->valid |= LEAP_SECOND_VALID;
session->context->gps_tow = f1;
+ session->context->valid |= GPS_TIME_VALID;
session->newdata.time =
gpstime_to_unix(session->context->gps_week,
@@ -290,7 +291,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
f1 = getbef(buf, 12); /* clock bias */
f2 = getbef(buf, 16); /* time-of-fix */
session->context->gps_tow = f2;
- if (session->context->gps_week) {
+ if ((session->context->valid & GPS_TIME_VALID)!=0 && session->context->gps_week) {
session->newdata.time =
gpstime_to_unix((int)session->context->gps_week,
session->context->gps_tow)
@@ -554,7 +555,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
d1 = getbed(buf, 24); /* clock bias */
f1 = getbef(buf, 32); /* time-of-fix */
session->context->gps_tow = f1;
- if (session->context->gps_week) {
+ if ((session->context->valid & GPS_TIME_VALID)!=0 && session->context->gps_week) {
session->newdata.time =
gpstime_to_unix((int)session->context->gps_week,
session->context->gps_tow)
@@ -655,6 +656,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
}
session->context->gps_week = (unsigned short)s4;
session->context->gps_tow = (double)ul1 *1e-3;
+ session->context->valid |= GPS_TIME_VALID;
/*@ ignore @*//*@ splint is confused @ */
session->newdata.time =
gpstime_to_unix((int)s4, session->context->gps_tow)
@@ -698,6 +700,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
}
session->context->gps_week = (unsigned short)s1;
session->context->gps_tow = (double)ul1 *1e3;
+ session->context->valid |= GPS_TIME_VALID;
/*@ ignore @*//*@ splint is confused @ */
session->newdata.time =
gpstime_to_unix(session->context->gps_week,
@@ -769,6 +772,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session)
session->context->gps_week = s1;
session->context->gps_tow = (double)ul1;
+ session->context->valid |= GPS_TIME_VALID;
session->newdata.time =
gpstime_to_unix((int)s1, session->context->gps_tow)
- (double)s2;