From 31f0e964aa54a2c8e4d299432513623d2c49bbf0 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 9 Apr 2013 20:34:23 -0500 Subject: gps: flush uart buffer before waiting for time This addresses a bug only on the master branch. Also turn off the servo sensor, its too long a delay. We will need to conditionally enable this in a later commit. --- host/lib/usrp/gps_ctrl.cpp | 3 ++- host/utils/query_gpsdo_sensors.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/host/lib/usrp/gps_ctrl.cpp b/host/lib/usrp/gps_ctrl.cpp index 917f115f3..8c177382a 100644 --- a/host/lib/usrp/gps_ctrl.cpp +++ b/host/lib/usrp/gps_ctrl.cpp @@ -201,7 +201,7 @@ private: sleep(milliseconds(FIREFLY_STUPID_DELAY_MS)); _send("GPS:GPRMC 1\n"); sleep(milliseconds(FIREFLY_STUPID_DELAY_MS)); - _send("SERV:TRAC 1\n"); // enable servo trace message + _send("SERV:TRAC 0\n"); sleep(milliseconds(FIREFLY_STUPID_DELAY_MS)); } @@ -240,6 +240,7 @@ private: } ptime get_time(void) { + _flush(); int error_cnt = 0; ptime gps_time; while(error_cnt < 2) { diff --git a/host/utils/query_gpsdo_sensors.cpp b/host/utils/query_gpsdo_sensors.cpp index b49a4aa99..91088112c 100644 --- a/host/utils/query_gpsdo_sensors.cpp +++ b/host/utils/query_gpsdo_sensors.cpp @@ -103,6 +103,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ //Check PPS and compare UHD device time to GPS time boost::this_thread::sleep(boost::posix_time::seconds(1)); uhd::sensor_value_t gps_time = usrp->get_mboard_sensor("gps_time"); + const time_t pc_clock_time = time(NULL); const uhd::time_spec_t last_pps_time = usrp->get_time_last_pps(); if (last_pps_time.to_ticks(1.0) == gps_time.to_int()) { std::cout << boost::format("GPS and UHD Device time are aligned.\n"); @@ -115,7 +116,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ uhd::sensor_value_t rmc_string = usrp->get_mboard_sensor("gps_gprmc"); std::cout << boost::format("%s\n%s\n%s\n") % gga_string.to_pp_string() % rmc_string.to_pp_string() % gps_time.to_pp_string(); std::cout << boost::format("UHD Device time: %.0f seconds\n") % (last_pps_time.get_real_secs()); - std::cout << boost::format("PC Clock time: %.0f seconds\n") % time(NULL); + std::cout << boost::format("PC Clock time: %.0f seconds\n") % pc_clock_time; //finished std::cout << boost::format("\nDone!\n\n"); -- cgit v1.2.3