diff options
author | Gary E. Miller <gem@rellim.com> | 2018-06-17 21:13:40 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2018-06-17 21:13:40 -0700 |
commit | cec85b55d8f7a6dac02ba1febc2107990907c269 (patch) | |
tree | cfbcba91b85d7e84a7d330b18ad45c1cb3ad445e /driver_ubx.c | |
parent | 73e3874948893e1737da766faa07435d786cb5d4 (diff) | |
download | gpsd-cec85b55d8f7a6dac02ba1febc2107990907c269.tar.gz |
driver_ubx: Put ECEF data fro mUBX-NAV-SOL into TPV.
Diffstat (limited to 'driver_ubx.c')
-rw-r--r-- | driver_ubx.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/driver_ubx.c b/driver_ubx.c index d9791c30..76ed6cea 100644 --- a/driver_ubx.c +++ b/driver_ubx.c @@ -291,14 +291,13 @@ ubx_msg_nav_pvt(struct gps_device_t *session, unsigned char *buf, } /** - * Navigation solution message + * Navigation solution message: UBX-NAV-SOL */ static gps_mask_t ubx_msg_nav_sol(struct gps_device_t *session, unsigned char *buf, size_t data_len) { unsigned int flags; - double epx, epy, epz, evx, evy, evz; unsigned char navmode; gps_mask_t mask; @@ -318,18 +317,25 @@ ubx_msg_nav_sol(struct gps_device_t *session, unsigned char *buf, } #undef DATE_VALID - epx = (double)(getles32(buf, 12) / 100.0); - epy = (double)(getles32(buf, 16) / 100.0); - epz = (double)(getles32(buf, 20) / 100.0); - evx = (double)(getles32(buf, 28) / 100.0); - evy = (double)(getles32(buf, 32) / 100.0); - evz = (double)(getles32(buf, 36) / 100.0); + session->newdata.ecef.x = getles32(buf, 12) / 100.0; + session->newdata.ecef.y = getles32(buf, 16) / 100.0; + session->newdata.ecef.z = getles32(buf, 20) / 100.0; + session->newdata.ecef.pAcc = getleu32(buf, 24) / 100.0; + session->newdata.ecef.vx = getles32(buf, 28) / 100.0; + session->newdata.ecef.vy = getles32(buf, 32) / 100.0; + session->newdata.ecef.vz = getles32(buf, 36) / 100.0; + session->newdata.ecef.vAcc = getleu32(buf, 40) / 100.0; ecef_to_wgs84fix(&session->newdata, &session->gpsdata.separation, - epx, epy, epz, evx, evy, evz); - mask |= LATLON_SET | ALTITUDE_SET | SPEED_SET | TRACK_SET | CLIMB_SET; + session->newdata.ecef.x, session->newdata.ecef.y, + session->newdata.ecef.z, session->newdata.ecef.vx, + session->newdata.ecef.vy, session->newdata.ecef.vz); + + mask |= LATLON_SET | ALTITUDE_SET | SPEED_SET | TRACK_SET | CLIMB_SET \ + | ECEF_SET | VECEF_SET; if (session->driver.ubx.last_herr > 0.0) { - session->newdata.epx = session->newdata.epy = session->driver.ubx.last_herr; + session->newdata.epx = session->newdata.epy \ + = session->driver.ubx.last_herr; mask |= HERR_SET; session->driver.ubx.last_herr = 0.0; } |