diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2015-04-09 22:28:51 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2015-04-09 22:28:51 +0200 |
commit | ee2eeba401fe5748228014291e265e587db45761 (patch) | |
tree | 3354c307e3fc02617f41f67d1f5c989504317534 | |
parent | 79f645974088aaf73b1d76266cac55346295f5b6 (diff) | |
download | px4-firmware-gps_timefix.tar.gz px4-firmware-gps_timefix.tar.bz2 px4-firmware-gps_timefix.zip |
GPS driver: Fix for bad UTC timestampsgps_timefix
-rw-r--r-- | src/drivers/gps/ubx.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/drivers/gps/ubx.cpp b/src/drivers/gps/ubx.cpp index f42c968d3..94c445014 100644 --- a/src/drivers/gps/ubx.cpp +++ b/src/drivers/gps/ubx.cpp @@ -737,7 +737,7 @@ UBX::payload_rx_done(void) _gps_position->cog_rad = (float)_buf.payload_rx_nav_pvt.headMot * M_DEG_TO_RAD_F * 1e-5f; _gps_position->c_variance_rad = (float)_buf.payload_rx_nav_pvt.headAcc * M_DEG_TO_RAD_F * 1e-5f; - { + if (_buf.payload_rx_nav_pvt.valid & (1 << 2)) { /* convert to unix timestamp */ struct tm timeinfo; timeinfo.tm_year = _buf.payload_rx_nav_pvt.year - 1900; @@ -765,6 +765,8 @@ UBX::payload_rx_done(void) } else { _gps_position->time_utc_usec = 0; } + } else { + _gps_position->time_utc_usec = 0; } _gps_position->timestamp_time = hrt_absolute_time(); @@ -813,7 +815,7 @@ UBX::payload_rx_done(void) case UBX_MSG_NAV_TIMEUTC: UBX_TRACE_RXMSG("Rx NAV-TIMEUTC\n"); - { + if (_buf.payload_rx_nav_timeutc.valid & (1 << 2)) { // convert to unix timestamp struct tm timeinfo; timeinfo.tm_year = _buf.payload_rx_nav_timeutc.year - 1900; @@ -843,9 +845,11 @@ UBX::payload_rx_done(void) } else { _gps_position->time_utc_usec = 0; } - } - _gps_position->timestamp_time = hrt_absolute_time(); + _gps_position->timestamp_time = hrt_absolute_time(); + } else { + _gps_position->time_utc_usec = 0; + } ret = 1; break; |