diff options
author | Philip Balister <philip@opensdr.com> | 2010-07-14 20:36:48 +0000 |
---|---|---|
committer | Philip Balister <philip@opensdr.com> | 2010-07-14 20:36:48 +0000 |
commit | 87428bf6e1c5fcf623595063921277f9827a919a (patch) | |
tree | fbd2855b45ff24bead6342375f87fe00abb20a05 /host/lib/usrp/mimo_usrp.cpp | |
parent | 9ee1b33bbc170b2e76fbb5b9a075d6b6c7315a7e (diff) | |
parent | 959669e383c75fdcbd11091466516bd5af66cfb5 (diff) | |
download | uhd-87428bf6e1c5fcf623595063921277f9827a919a.tar.gz uhd-87428bf6e1c5fcf623595063921277f9827a919a.tar.bz2 uhd-87428bf6e1c5fcf623595063921277f9827a919a.zip |
Merge branch 'master' of ettus.sourcerepo.com:ettus/uhdpriv into usrp_e
Diffstat (limited to 'host/lib/usrp/mimo_usrp.cpp')
-rw-r--r-- | host/lib/usrp/mimo_usrp.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/host/lib/usrp/mimo_usrp.cpp b/host/lib/usrp/mimo_usrp.cpp index fd8225074..b40f98226 100644 --- a/host/lib/usrp/mimo_usrp.cpp +++ b/host/lib/usrp/mimo_usrp.cpp @@ -125,20 +125,33 @@ public: void set_time_unknown_pps(const time_spec_t &time_spec){ std::cout << "Set time with unknown pps edge:" << std::endl; - std::cout << " 1) set times next pps (race condition)" << std::endl; + std::cout << " 1) set times next pps (race condition)" << std::endl; set_time_next_pps(time_spec); boost::this_thread::sleep(boost::posix_time::seconds(1)); - std::cout << " 2) catch seconds rollover at pps edge" << std::endl; + std::cout << " 2) catch seconds rollover at pps edge" << std::endl; time_t last_secs = 0, curr_secs = 0; while(curr_secs == last_secs){ last_secs = curr_secs; curr_secs = get_time_now().get_full_secs(); } - std::cout << " 3) set times next pps (synchronously)" << std::endl; + std::cout << " 3) set times next pps (synchronously)" << std::endl; set_time_next_pps(time_spec); boost::this_thread::sleep(boost::posix_time::seconds(1)); + + //verify that the time registers are read to be within a few RTT + for (size_t i = 1; i < get_num_channels(); i++){ + time_spec_t time_0 = _mboards.front()[MBOARD_PROP_TIME_NOW].as<time_spec_t>(); + time_spec_t time_i = _mboards.at(i)[MBOARD_PROP_TIME_NOW].as<time_spec_t>(); + if (time_i < time_0 or (time_i - time_0) > time_spec_t(0.01)){ //10 ms: greater than RTT but not too big + std::cerr << boost::format( + "Error: time deviation between board %d and board 0.\n" + " Board 0 time is %f seconds.\n" + " Board %d time is %f seconds.\n" + ) % i % time_0.get_real_secs() % i % time_i.get_real_secs() << std::endl; + } + } } void issue_stream_cmd(const stream_cmd_t &stream_cmd){ |