summaryrefslogtreecommitdiff
path: root/gpsutils.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-06-17 12:47:43 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-06-17 12:47:43 +0000
commit441f58209b14a3d5f9ae91cb8a11f2d6fcca8664 (patch)
tree841da9aa0e74138e2ac589aa775bbe4bf869b810 /gpsutils.c
parent7ab47674ab2fde31dcde36cbc4729b3e285e0e97 (diff)
downloadgpsd-441f58209b14a3d5f9ae91cb8a11f2d6fcca8664.tar.gz
New data-lifetime code looks like it might be ready for prime time.
Diffstat (limited to 'gpsutils.c')
-rw-r--r--gpsutils.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gpsutils.c b/gpsutils.c
index b443388c..b59583ee 100644
--- a/gpsutils.c
+++ b/gpsutils.c
@@ -392,7 +392,7 @@ static int invert(double mat[4][4], /*@out@*/double inverse[4][4])
}
/*@ +fixedformalarray +mustdefine @*/
-void dop(int channels, struct gps_data_t *gpsdata)
+gps_mask_t dop(int channels, struct gps_data_t *gpsdata)
{
double prod[4][4];
double inv[4][4];
@@ -445,20 +445,20 @@ void dop(int channels, struct gps_data_t *gpsdata)
}
#endif /* __UNUSED__ */
-#ifdef __UNUSED__
if (invert(prod, inv)) {
+#ifdef __UNUSED__
gpsd_report(0, "inverse:\n");
for (k = 0; k < 4; k++) {
gpsd_report(0, "%f %f %f %f\n",
inv[k][0], inv[k][1], inv[k][2], inv[k][3]);
}
- gpsd_report(0, "HDOP: reported = %f, computed = %f\n",
+ gpsd_report(1, "HDOP: reported = %f, computed = %f\n",
gpsdata->hdop, sqrt(inv[0][0] + inv[1][1]));
- } else
- gpsd_report(0, "Matrix is singular.\n");
-#else
- (void)invert(prod, inv);
#endif /* __UNUSED__ */
+ } else {
+ gpsd_report(1, "Matrix is singular.\n");
+ return 0;
+ }
/*@ -usedef @*/
//gpsdata->hdop = sqrt(inv[0][0] + inv[1][1]);
@@ -467,4 +467,6 @@ void dop(int channels, struct gps_data_t *gpsdata)
gpsdata->tdop = sqrt(inv[3][3]);
gpsdata->gdop = sqrt(inv[0][0] + inv[1][1] + inv[2][2] + inv[3][3]);
/*@ +usedef @*/
+
+ return VDOP_SET | PDOP_SET | TDOP_SET | GDOP_SET;
}