summaryrefslogtreecommitdiff
path: root/driver_geostar.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2012-06-02 02:08:34 -0400
committerEric S. Raymond <esr@thyrsus.com>2012-06-02 02:08:34 -0400
commitfa034144b0f61a8993a7a48af41334dd9e65d89b (patch)
tree13f79d52bbc284e6924dd97d84bf0ad224606d98 /driver_geostar.c
parent7b6292a4fed8434b3344821bc7ee0ba1c90e124f (diff)
downloadgpsd-fa034144b0f61a8993a7a48af41334dd9e65d89b.tar.gz
Refacter the bits.c stuff to eliminate ugly globals...
...and be more explicit about operand sizes. All regressuion tests [ass, code splints clean.
Diffstat (limited to 'driver_geostar.c')
-rw-r--r--driver_geostar.c41
1 files changed, 20 insertions, 21 deletions
diff --git a/driver_geostar.c b/driver_geostar.c
index 12660194..2a3d7e88 100644
--- a/driver_geostar.c
+++ b/driver_geostar.c
@@ -126,7 +126,6 @@ static gps_mask_t geostar_analyze(struct gps_device_t *session)
uint16_t uw1, uw2;
uint32_t ul1, ul2, ul3, ul4, ul5;
double d1, d2, d3, d4, d5;
- union long_double l_d;
unsigned char buf[BUFSIZ];
char buf2[BUFSIZ];
@@ -172,29 +171,29 @@ static gps_mask_t geostar_analyze(struct gps_device_t *session)
gpsd_report(LOG_INF, "GLONASS sub-frame data\n");
break;
case 0x13:
- d1 = getled(buf, OFFSET(1));
- d2 = getled(buf, OFFSET(3));
- d3 = getled(buf, OFFSET(5));
- d4 = getled(buf, OFFSET(29)); /* GPS time */
- d5 = getled(buf, OFFSET(31)); /* GLONASS time */
+ d1 = getled64(buf, OFFSET(1));
+ d2 = getled64(buf, OFFSET(3));
+ d3 = getled64(buf, OFFSET(5));
+ d4 = getled64(buf, OFFSET(29)); /* GPS time */
+ d5 = getled64(buf, OFFSET(31)); /* GLONASS time */
gpsd_report(LOG_INF, "ECEF coordinates %g %g %g %f %f\n", d1, d2, d3, d4, d5);
break;
case 0x20:
- d1 = getled(buf, OFFSET(1)); /* time */
+ d1 = getled64(buf, OFFSET(1)); /* time */
session->newdata.time = d1 + JAN_2008;
- session->newdata.latitude = getled(buf, OFFSET(3)) * RAD_2_DEG;
- session->newdata.longitude = getled(buf, OFFSET(5)) * RAD_2_DEG;
- session->newdata.altitude = getled(buf, OFFSET(7));
- session->gpsdata.separation = getled(buf, OFFSET(9));
+ session->newdata.latitude = getled64(buf, OFFSET(3)) * RAD_2_DEG;
+ session->newdata.longitude = getled64(buf, OFFSET(5)) * RAD_2_DEG;
+ session->newdata.altitude = getled64(buf, OFFSET(7));
+ session->gpsdata.separation = getled64(buf, OFFSET(9));
session->gpsdata.satellites_used = (int)getles32(buf, OFFSET(11));
- session->gpsdata.dop.gdop = getled(buf, OFFSET(13));
- session->gpsdata.dop.pdop = getled(buf, OFFSET(15));
- session->gpsdata.dop.tdop = getled(buf, OFFSET(17));
- session->gpsdata.dop.hdop = getled(buf, OFFSET(19));
- session->gpsdata.dop.vdop = getled(buf, OFFSET(21));
- session->newdata.speed = getled(buf, OFFSET(31));
- session->newdata.track = getled(buf, OFFSET(33)) * RAD_2_DEG;
+ session->gpsdata.dop.gdop = getled64(buf, OFFSET(13));
+ session->gpsdata.dop.pdop = getled64(buf, OFFSET(15));
+ session->gpsdata.dop.tdop = getled64(buf, OFFSET(17));
+ session->gpsdata.dop.hdop = getled64(buf, OFFSET(19));
+ session->gpsdata.dop.vdop = getled64(buf, OFFSET(21));
+ session->newdata.speed = getled64(buf, OFFSET(31));
+ session->newdata.track = getled64(buf, OFFSET(33)) * RAD_2_DEG;
ul1 = getleu32(buf, OFFSET(29)); /* status */
@@ -369,9 +368,9 @@ static gps_mask_t geostar_analyze(struct gps_device_t *session)
gpsd_report(LOG_INF, "Response to Query GPS ephemerides\n");
break;
case 0x8b:
- d1 = getled(buf, OFFSET(23));
- d2 = getled(buf, OFFSET(25));
- d3 = getled(buf, OFFSET(27));
+ d1 = getled64(buf, OFFSET(23));
+ d2 = getled64(buf, OFFSET(25));
+ d3 = getled64(buf, OFFSET(27));
gpsd_report(LOG_INF, "Response to Query GLONASS ephemerides %g %g %g\n",
d1, d2, d3);
break;