diff options
author | Gary E. Miller <gem@rellim.com> | 2018-06-17 21:52:17 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2018-06-17 21:52:17 -0700 |
commit | a40408ec2be69806a7d876396dddaca728e6f6dd (patch) | |
tree | cf4959351ee6dff771328843b73018acfcb5c488 /driver_sirf.c | |
parent | 2e4d7a0efa57518d3fb0eec45f0c809d99280f4a (diff) | |
download | gpsd-a40408ec2be69806a7d876396dddaca728e6f6dd.tar.gz |
driver_sirf: Report ECEF in TPV.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r-- | driver_sirf.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/driver_sirf.c b/driver_sirf.c index a43d79cf..793ce0a0 100644 --- a/driver_sirf.c +++ b/driver_sirf.c @@ -703,13 +703,17 @@ static gps_mask_t sirf_msg_navsol(struct gps_device_t *session, * we get that data from the svinfo packet. */ /* position/velocity is bytes 1-18 */ + session->newdata.ecef.x = (double)getbes32(buf, 1) * 1.0, + session->newdata.ecef.y = (double)getbes32(buf, 5) * 1.0, + session->newdata.ecef.z = (double)getbes32(buf, 9) * 1.0, + session->newdata.ecef.vx = (double)getbes16(buf, 13) / 8.0, + session->newdata.ecef.vy = (double)getbes16(buf, 15) / 8.0, + session->newdata.ecef.vz = (double)getbes16(buf, 17) / 8.0; + ecef_to_wgs84fix(&session->newdata, &session->gpsdata.separation, - (double)getbes32(buf, 1) * 1.0, - (double)getbes32(buf, 5) * 1.0, - (double)getbes32(buf, 9) * 1.0, - (double)getbes16(buf, 13) / 8.0, - (double)getbes16(buf, 15) / 8.0, - (double)getbes16(buf, 17) / 8.0); + session->newdata.ecef.x, session->newdata.ecef.y, + session->newdata.ecef.z, session->newdata.ecef.vx, + session->newdata.ecef.vy, session->newdata.ecef.vz); /* fix status is byte 19 */ navtype = (unsigned short)getub(buf, 19); session->gpsdata.status = STATUS_NO_FIX; @@ -747,9 +751,8 @@ static gps_mask_t sirf_msg_navsol(struct gps_device_t *session, session->gpsdata.dop.hdop = (double)getub(buf, 20) / 5.0; /* clear computed DOPs so they get recomputed. */ session->gpsdata.dop.tdop = NAN; - mask |= - TIME_SET | LATLON_SET | ALTITUDE_SET | TRACK_SET | - SPEED_SET | STATUS_SET | MODE_SET | DOP_SET | USED_IS; + mask |= TIME_SET | LATLON_SET | ALTITUDE_SET | TRACK_SET | ECEF_SET + | VECEF_SET | SPEED_SET | STATUS_SET | MODE_SET | DOP_SET | USED_IS; if ( 3 <= session->gpsdata.satellites_visible ) { mask |= NTPTIME_IS; } |