diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-08-24 15:48:42 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2018-03-05 13:53:45 -0800 |
commit | 7fa1f6ed0726ff0f908245e43a01f50620293e8d (patch) | |
tree | 714036231990d38fc4ccd2b2913b6a4ebac2235d /host | |
parent | 347bb79d2adef4b5bf3e3a94577ecc18c0408519 (diff) | |
download | uhd-7fa1f6ed0726ff0f908245e43a01f50620293e8d.tar.gz uhd-7fa1f6ed0726ff0f908245e43a01f50620293e8d.tar.bz2 uhd-7fa1f6ed0726ff0f908245e43a01f50620293e8d.zip |
uhd: Moved get_system_time outside of public API
uhd::get_system_time() is an abstracted way of reading back a time, and
is not UHD-specific. As such, there's no reason to keep it in the public
part of the API where we're contractually obligated not to touch it.
Instead, moving it to the internal API space.
Diffstat (limited to 'host')
-rw-r--r-- | host/examples/twinrx_freq_hopping.cpp | 9 | ||||
-rw-r--r-- | host/include/uhd/types/time_spec.hpp | 8 | ||||
-rw-r--r-- | host/lib/include/uhd/utils/system_time.hpp | 18 | ||||
-rw-r--r-- | host/lib/types/CMakeLists.txt | 61 | ||||
-rw-r--r-- | host/lib/types/time_spec.cpp | 48 | ||||
-rw-r--r-- | host/lib/usrp/common/recv_packet_demuxer_3000.hpp | 6 | ||||
-rw-r--r-- | host/lib/usrp/e300/e300_fifo_config.cpp | 5 | ||||
-rw-r--r-- | host/lib/usrp/usrp1/soft_time_ctrl.cpp | 5 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_dac_ctrl.cpp | 9 | ||||
-rw-r--r-- | host/lib/utils/CMakeLists.txt | 63 | ||||
-rw-r--r-- | host/lib/utils/system_time.cpp | 54 | ||||
-rw-r--r-- | host/tests/system_time_test.cpp | 32 | ||||
-rw-r--r-- | host/tests/time_spec_test.cpp | 18 |
13 files changed, 188 insertions, 148 deletions
diff --git a/host/examples/twinrx_freq_hopping.cpp b/host/examples/twinrx_freq_hopping.cpp index 516af123b..e6819adde 100644 --- a/host/examples/twinrx_freq_hopping.cpp +++ b/host/examples/twinrx_freq_hopping.cpp @@ -14,6 +14,7 @@ #include <boost/program_options.hpp> #include <boost/thread.hpp> +#include <boost/thread/thread_time.hpp> #include <fstream> @@ -222,7 +223,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ while(1) { std::cout << "Scanning..." << std::endl; - uhd::time_spec_t start_time = uhd::time_spec_t::get_system_time(); + auto start_time = boost::get_system_time(); for (size_t i = 0; i < rf_freqs.size(); i++) { // Swap the mapping of synthesizers by setting the LO source @@ -249,8 +250,10 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ } } - uhd::time_spec_t end_time = uhd::time_spec_t::get_system_time(); - std::cout << boost::format("Sweep done in %d milliseconds.\n") % ((end_time - start_time).get_real_secs() * 1000); + auto end_time = boost::get_system_time(); + std::cout + << boost::format("Sweep done in %d milliseconds.\n") + % ((end_time - start_time).total_milliseconds() * 1000); // Optionally convert received samples to FFT and write to file if(vm.count("fft-path")) { diff --git a/host/include/uhd/types/time_spec.hpp b/host/include/uhd/types/time_spec.hpp index 768ea106b..8b05f53b5 100644 --- a/host/include/uhd/types/time_spec.hpp +++ b/host/include/uhd/types/time_spec.hpp @@ -29,14 +29,6 @@ namespace uhd{ class UHD_API time_spec_t : boost::additive<time_spec_t>, boost::totally_ordered<time_spec_t>{ public: - /*! DEPRECATED -- Will get removed from UHD in future versions. - * - * Get the system time in time_spec_t format. - * Uses the highest precision clock available. - * \return the system time as a time_spec_t - */ - static time_spec_t get_system_time(void); - /*! * Create a time_spec_t from a real-valued seconds count. * \param secs the real-valued seconds count (default = 0) diff --git a/host/lib/include/uhd/utils/system_time.hpp b/host/lib/include/uhd/utils/system_time.hpp new file mode 100644 index 000000000..30cd5a673 --- /dev/null +++ b/host/lib/include/uhd/utils/system_time.hpp @@ -0,0 +1,18 @@ +// +// Copyright 2017 Ettus Research (National Instruments Corp.) +// +// SPDX-License-Identifier: GPL-3.0+ +// + +#include <uhd/types/time_spec.hpp> + +namespace uhd { + + /*! + * Get the system time in time_spec_t format. + * Uses the highest precision clock available. + * \return the system time as a time_spec_t + */ + time_spec_t get_system_time(void); + +}; /* namespace uhd */ diff --git a/host/lib/types/CMakeLists.txt b/host/lib/types/CMakeLists.txt index 2156160cd..7f8c80c95 100644 --- a/host/lib/types/CMakeLists.txt +++ b/host/lib/types/CMakeLists.txt @@ -6,67 +6,6 @@ # ######################################################################## -# Setup defines for high resolution timing -######################################################################## -MESSAGE(STATUS "") -MESSAGE(STATUS "Configuring high resolution timing...") -INCLUDE(CheckCXXSourceCompiles) - -SET(CMAKE_REQUIRED_LIBRARIES -lrt) -CHECK_CXX_SOURCE_COMPILES(" - #include <ctime> - int main(){ - timespec ts; - return clock_gettime(CLOCK_MONOTONIC, &ts); - } - " HAVE_CLOCK_GETTIME -) -SET(CMAKE_REQUIRED_LIBRARIES) - -INCLUDE(CheckCXXSourceCompiles) -CHECK_CXX_SOURCE_COMPILES(" - #include <mach/mach_time.h> - int main(){ - mach_timebase_info_data_t info; - mach_timebase_info(&info); - mach_absolute_time(); - return 0; - } - " HAVE_MACH_ABSOLUTE_TIME -) - -CHECK_CXX_SOURCE_COMPILES(" - #include <Windows.h> - int main(){ - LARGE_INTEGER value; - QueryPerformanceCounter(&value); - QueryPerformanceFrequency(&value); - return 0; - } - " HAVE_QUERY_PERFORMANCE_COUNTER -) - -IF(HAVE_CLOCK_GETTIME) - MESSAGE(STATUS " High resolution timing supported through clock_gettime.") - SET(TIME_SPEC_DEFS HAVE_CLOCK_GETTIME) - LIBUHD_APPEND_LIBS("-lrt") -ELSEIF(HAVE_MACH_ABSOLUTE_TIME) - MESSAGE(STATUS " High resolution timing supported through mach_absolute_time.") - SET(TIME_SPEC_DEFS HAVE_MACH_ABSOLUTE_TIME) -ELSEIF(HAVE_QUERY_PERFORMANCE_COUNTER) - MESSAGE(STATUS " High resolution timing supported through QueryPerformanceCounter.") - SET(TIME_SPEC_DEFS HAVE_QUERY_PERFORMANCE_COUNTER) -ELSE() - MESSAGE(STATUS " High resolution timing supported though microsec_clock.") - SET(TIME_SPEC_DEFS HAVE_MICROSEC_CLOCK) -ENDIF() - -SET_SOURCE_FILES_PROPERTIES( - ${CMAKE_CURRENT_SOURCE_DIR}/time_spec.cpp - PROPERTIES COMPILE_DEFINITIONS "${TIME_SPEC_DEFS}" -) - -######################################################################## # This file included, use CMake directory variables ######################################################################## LIBUHD_APPEND_SOURCES( diff --git a/host/lib/types/time_spec.cpp b/host/lib/types/time_spec.cpp index 40df87611..aae6a6121 100644 --- a/host/lib/types/time_spec.cpp +++ b/host/lib/types/time_spec.cpp @@ -10,54 +10,6 @@ using namespace uhd; /*********************************************************************** - * Time spec system time - **********************************************************************/ - -#ifdef HAVE_CLOCK_GETTIME -#include <time.h> -time_spec_t time_spec_t::get_system_time(void){ - timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); - return time_spec_t(ts.tv_sec, ts.tv_nsec, 1e9); -} -#endif /* HAVE_CLOCK_GETTIME */ - - -#ifdef HAVE_MACH_ABSOLUTE_TIME -#include <mach/mach_time.h> -time_spec_t time_spec_t::get_system_time(void){ - mach_timebase_info_data_t info; mach_timebase_info(&info); - intmax_t nanosecs = mach_absolute_time()*info.numer/info.denom; - return time_spec_t::from_ticks(nanosecs, 1e9); -} -#endif /* HAVE_MACH_ABSOLUTE_TIME */ - - -#ifdef HAVE_QUERY_PERFORMANCE_COUNTER -#include <Windows.h> -time_spec_t time_spec_t::get_system_time(void){ - LARGE_INTEGER counts, freq; - QueryPerformanceCounter(&counts); - QueryPerformanceFrequency(&freq); - return time_spec_t::from_ticks(counts.QuadPart, double(freq.QuadPart)); -} -#endif /* HAVE_QUERY_PERFORMANCE_COUNTER */ - - -#ifdef HAVE_MICROSEC_CLOCK -#include <boost/date_time/posix_time/posix_time.hpp> -namespace pt = boost::posix_time; -time_spec_t time_spec_t::get_system_time(void){ - pt::ptime time_now = pt::microsec_clock::universal_time(); - pt::time_duration time_dur = time_now - pt::from_time_t(0); - return time_spec_t( - time_t(time_dur.total_seconds()), - long(time_dur.fractional_seconds()), - double(pt::time_duration::ticks_per_second()) - ); -} -#endif /* HAVE_MICROSEC_CLOCK */ - -/*********************************************************************** * Time spec constructors **********************************************************************/ #define time_spec_init(full, frac) { \ diff --git a/host/lib/usrp/common/recv_packet_demuxer_3000.hpp b/host/lib/usrp/common/recv_packet_demuxer_3000.hpp index 8b0aa9ee0..74807741f 100644 --- a/host/lib/usrp/common/recv_packet_demuxer_3000.hpp +++ b/host/lib/usrp/common/recv_packet_demuxer_3000.hpp @@ -8,6 +8,7 @@ #ifndef INCLUDED_LIBUHD_USRP_COMMON_RECV_PACKET_DEMUXER_3000_HPP #define INCLUDED_LIBUHD_USRP_COMMON_RECV_PACKET_DEMUXER_3000_HPP +#include <uhd/utils/system_time.hpp> #include <uhd/config.hpp> #include <uhd/transport/zero_copy.hpp> #include <uhd/utils/log.hpp> @@ -35,12 +36,13 @@ namespace uhd{ namespace usrp{ transport::managed_recv_buffer::sptr get_recv_buff(const uint32_t sid, const double timeout) { - const time_spec_t exit_time = time_spec_t(timeout) + time_spec_t::get_system_time(); + const time_spec_t exit_time = + time_spec_t(timeout) + uhd::get_system_time(); transport::managed_recv_buffer::sptr buff; buff = _internal_get_recv_buff(sid, timeout); while (not buff) //loop until timeout { - const time_spec_t delta = exit_time - time_spec_t::get_system_time(); + const time_spec_t delta = exit_time - uhd::get_system_time(); const double new_timeout = delta.get_real_secs(); if (new_timeout < 0.0) break; buff = _internal_get_recv_buff(sid, new_timeout); diff --git a/host/lib/usrp/e300/e300_fifo_config.cpp b/host/lib/usrp/e300/e300_fifo_config.cpp index 7d4834040..c02c943dd 100644 --- a/host/lib/usrp/e300/e300_fifo_config.cpp +++ b/host/lib/usrp/e300/e300_fifo_config.cpp @@ -7,6 +7,7 @@ #ifdef E300_NATIVE +#include <uhd/utils/system_time.hpp> #include <uhd/config.hpp> #include <stdint.h> #include <atomic> @@ -238,7 +239,7 @@ public: template <typename T> UHD_INLINE typename T::sptr get_buff(const double timeout) { - const time_spec_t exit_time = time_spec_t::get_system_time() + time_spec_t(timeout); + const time_spec_t exit_time = uhd::get_system_time() + time_spec_t(timeout); while (1) { if (zf_peek32(_addrs.ctrl + ARBITER_RB_STATUS_OCC)) @@ -251,7 +252,7 @@ public: _index = 0; return _buffs[_index++]->get_new<T>(); } - if (time_spec_t::get_system_time() > exit_time) { + if (uhd::get_system_time() > exit_time) { break; } _waiter->wait(timeout); diff --git a/host/lib/usrp/usrp1/soft_time_ctrl.cpp b/host/lib/usrp/usrp1/soft_time_ctrl.cpp index 626f973e1..061075e32 100644 --- a/host/lib/usrp/usrp1/soft_time_ctrl.cpp +++ b/host/lib/usrp/usrp1/soft_time_ctrl.cpp @@ -6,6 +6,7 @@ // #include "soft_time_ctrl.hpp" +#include <uhd/utils/system_time.hpp> #include <uhd/utils/tasks.hpp> #include <boost/make_shared.hpp> #include <boost/thread/condition_variable.hpp> @@ -49,7 +50,7 @@ public: ******************************************************************/ void set_time(const time_spec_t &time){ boost::mutex::scoped_lock lock(_update_mutex); - _time_offset = time_spec_t::get_system_time() - time; + _time_offset = uhd::get_system_time() - time; } time_spec_t get_time(void){ @@ -59,7 +60,7 @@ public: UHD_INLINE time_spec_t time_now(void){ //internal get time without scoped lock - return time_spec_t::get_system_time() - _time_offset; + return uhd::get_system_time() - _time_offset; } UHD_INLINE void sleep_until_time( diff --git a/host/lib/usrp/x300/x300_dac_ctrl.cpp b/host/lib/usrp/x300/x300_dac_ctrl.cpp index 5648a5fb7..400e48282 100644 --- a/host/lib/usrp/x300/x300_dac_ctrl.cpp +++ b/host/lib/usrp/x300/x300_dac_ctrl.cpp @@ -7,6 +7,7 @@ #include "x300_dac_ctrl.hpp" #include "x300_regs.hpp" +#include <uhd/utils/system_time.hpp> #include <uhd/types/time_spec.hpp> #include <uhd/utils/log.hpp> #include <uhd/utils/safe_call.hpp> @@ -207,14 +208,14 @@ public: // Verify PLL is Locked. 1 sec timeout. // NOTE: Data sheet inconsistent about which pins give PLL lock status. FIXME! - const time_spec_t exit_time = time_spec_t::get_system_time() + time_spec_t(1.0); + const time_spec_t exit_time = uhd::get_system_time() + time_spec_t(1.0); while (true) { const size_t reg_e = read_ad9146_reg(0x0E); // PLL Status (Expect bit 7 = 1) const size_t reg_6 = read_ad9146_reg(0x06); // Event Flags (Expect bit 7 = 0 and bit 6 = 1) if ((((reg_e >> 7) & 0x1) == 0x1) && (((reg_6 >> 6) & 0x3) == 0x1)) break; - if (time_spec_t::get_system_time() > exit_time) + if (exit_time < uhd::get_system_time()) throw uhd::runtime_error("x300_dac_ctrl: timeout waiting for DAC PLL to lock"); if (reg_6 & (1 << 7)) // Lock lost? write_ad9146_reg(0x06, 0xC0); // Clear PLL event flags @@ -231,7 +232,7 @@ public: write_ad9146_reg(0x06, 0x30); write_ad9146_reg(0x12, 0x00); - const time_spec_t exit_time = time_spec_t::get_system_time() + time_spec_t(1.0); + const time_spec_t exit_time = uhd::get_system_time() + time_spec_t(1.0); while (true) { boost::this_thread::sleep(boost::posix_time::milliseconds(1)); // wait for sync to complete @@ -239,7 +240,7 @@ public: const size_t reg_6 = read_ad9146_reg(0x06); // Event Flags (Expect bit 5 = 0 and bit 4 = 1) if ((((reg_12 >> 6) & 0x3) == 0x1) && (((reg_6 >> 4) & 0x3) == 0x1)) break; - if (time_spec_t::get_system_time() > exit_time) + if (exit_time < uhd::get_system_time()) throw uhd::runtime_error("x300_dac_ctrl: timeout waiting for backend synchronization"); if (reg_6 & (1 << 5)) write_ad9146_reg(0x06, 0x30); // Clear Sync event flags diff --git a/host/lib/utils/CMakeLists.txt b/host/lib/utils/CMakeLists.txt index 659c855a1..ea59df081 100644 --- a/host/lib/utils/CMakeLists.txt +++ b/host/lib/utils/CMakeLists.txt @@ -91,6 +91,68 @@ SET_SOURCE_FILES_PROPERTIES( ) ######################################################################## +# Setup defines for high resolution timing +######################################################################## +MESSAGE(STATUS "") +MESSAGE(STATUS "Configuring high resolution timing...") +INCLUDE(CheckCXXSourceCompiles) + +SET(CMAKE_REQUIRED_LIBRARIES -lrt) +CHECK_CXX_SOURCE_COMPILES(" + #include <ctime> + int main(){ + timespec ts; + return clock_gettime(CLOCK_MONOTONIC, &ts); + } + " HAVE_CLOCK_GETTIME +) +SET(CMAKE_REQUIRED_LIBRARIES) + +INCLUDE(CheckCXXSourceCompiles) +CHECK_CXX_SOURCE_COMPILES(" + #include <mach/mach_time.h> + int main(){ + mach_timebase_info_data_t info; + mach_timebase_info(&info); + mach_absolute_time(); + return 0; + } + " HAVE_MACH_ABSOLUTE_TIME +) + +CHECK_CXX_SOURCE_COMPILES(" + #include <Windows.h> + int main(){ + LARGE_INTEGER value; + QueryPerformanceCounter(&value); + QueryPerformanceFrequency(&value); + return 0; + } + " HAVE_QUERY_PERFORMANCE_COUNTER +) + + +IF(HAVE_CLOCK_GETTIME) + MESSAGE(STATUS " High resolution timing supported through clock_gettime.") + SET(SYSTEM_TIME_DEFS HAVE_CLOCK_GETTIME) + LIBUHD_APPEND_LIBS("-lrt") +ELSEIF(HAVE_MACH_ABSOLUTE_TIME) + MESSAGE(STATUS " High resolution timing supported through mach_absolute_time.") + SET(SYSTEM_TIME_DEFS HAVE_MACH_ABSOLUTE_TIME) +ELSEIF(HAVE_QUERY_PERFORMANCE_COUNTER) + MESSAGE(STATUS " High resolution timing supported through QueryPerformanceCounter.") + SET(SYSTEM_TIME_DEFS HAVE_QUERY_PERFORMANCE_COUNTER) +ELSE() + MESSAGE(STATUS " High resolution timing supported though microsec_clock.") + SET(SYSTEM_TIME_DEFS HAVE_MICROSEC_CLOCK) +ENDIF() + +SET_SOURCE_FILES_PROPERTIES( + ${CMAKE_CURRENT_SOURCE_DIR}/system_time.cpp + PROPERTIES COMPILE_DEFINITIONS "${SYSTEM_TIME_DEFS}" +) + +######################################################################## # Setup defines for module loading ######################################################################## MESSAGE(STATUS "") @@ -178,6 +240,7 @@ LIBUHD_APPEND_SOURCES( ${CMAKE_CURRENT_SOURCE_DIR}/platform.cpp ${CMAKE_CURRENT_SOURCE_DIR}/prefs.cpp ${CMAKE_CURRENT_SOURCE_DIR}/static.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/system_time.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tasks.cpp ${CMAKE_CURRENT_SOURCE_DIR}/thread.cpp ) diff --git a/host/lib/utils/system_time.cpp b/host/lib/utils/system_time.cpp new file mode 100644 index 000000000..d371756bc --- /dev/null +++ b/host/lib/utils/system_time.cpp @@ -0,0 +1,54 @@ +// +// Copyright 2017 Ettus Research (National Instruments Corp.) +// +// SPDX-License-Identifier: GPL-3.0+ +// + +#include <uhd/utils/system_time.hpp> + +using namespace uhd; + +#ifdef HAVE_CLOCK_GETTIME +#include <time.h> +time_spec_t uhd::get_system_time(void){ + timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); + return time_spec_t(ts.tv_sec, ts.tv_nsec, 1e9); +} +#endif /* HAVE_CLOCK_GETTIME */ + + +#ifdef HAVE_MACH_ABSOLUTE_TIME +#include <mach/mach_time.h> +time_spec_t uhd::get_system_time(void){ + mach_timebase_info_data_t info; mach_timebase_info(&info); + intmax_t nanosecs = mach_absolute_time()*info.numer/info.denom; + return time_spec_t::from_ticks(nanosecs, 1e9); +} +#endif /* HAVE_MACH_ABSOLUTE_TIME */ + + +#ifdef HAVE_QUERY_PERFORMANCE_COUNTER +#include <Windows.h> +time_spec_t uhd::get_system_time(void){ + LARGE_INTEGER counts, freq; + QueryPerformanceCounter(&counts); + QueryPerformanceFrequency(&freq); + return time_spec_t::from_ticks(counts.QuadPart, double(freq.QuadPart)); +} +#endif /* HAVE_QUERY_PERFORMANCE_COUNTER */ + + +#ifdef HAVE_MICROSEC_CLOCK +#include <boost/date_time/posix_time/posix_time.hpp> +namespace pt = boost::posix_time; +time_spec_t uhd::get_system_time(void){ + pt::ptime time_now = pt::microsec_clock::universal_time(); + pt::time_duration time_dur = time_now - pt::from_time_t(0); + return time_spec_t( + time_t(time_dur.total_seconds()), + long(time_dur.fractional_seconds()), + double(pt::time_duration::ticks_per_second()) + ); +} +#endif /* HAVE_MICROSEC_CLOCK */ + diff --git a/host/tests/system_time_test.cpp b/host/tests/system_time_test.cpp new file mode 100644 index 000000000..165bcf3aa --- /dev/null +++ b/host/tests/system_time_test.cpp @@ -0,0 +1,32 @@ +// +// Copyright 2017 Ettus Research (National Instruments Corp.) +// +// SPDX-License-Identifier: GPL-3.0+ +// + +#include <boost/test/unit_test.hpp> +#include <uhd/types/time_spec.hpp> +#include "system_time.hpp" +#include <iostream> +#include <iomanip> +#include <cstdint> +#include <chrono> + +BOOST_AUTO_TEST_CASE(test_time_spec_get_system_time){ + std::cout << "Testing time specification get system time..." << std::endl; + + //Not really checking for high resolution timing here, + //just need to check that system time is minimally working. + + auto start = uhd::get_system_time(); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + auto stop = uhd::get_system_time(); + + auto diff = stop - start; + std::cout << "start: " << start.get_real_secs() << std::endl; + std::cout << "stop: " << stop.get_real_secs() << std::endl; + std::cout << "diff: " << diff.get_real_secs() << std::endl; + BOOST_CHECK(diff.get_real_secs() > 0); //assert positive + BOOST_CHECK(diff.get_real_secs() < 1.0); //assert under 1s +} + diff --git a/host/tests/time_spec_test.cpp b/host/tests/time_spec_test.cpp index 445846ba8..89a5370bd 100644 --- a/host/tests/time_spec_test.cpp +++ b/host/tests/time_spec_test.cpp @@ -52,24 +52,6 @@ BOOST_AUTO_TEST_CASE(test_time_spec_parts){ BOOST_CHECK_EQUAL(uhd::time_spec_t(-1.1).to_ticks(100), -110); } -BOOST_AUTO_TEST_CASE(test_time_spec_get_system_time){ - std::cout << "Testing time specification get system time..." << std::endl; - - //Not really checking for high resolution timing here, - //just need to check that system time is minimally working. - - uhd::time_spec_t start = uhd::time_spec_t::get_system_time(); - boost::this_thread::sleep(boost::posix_time::milliseconds(500)); - uhd::time_spec_t stop = uhd::time_spec_t::get_system_time(); - - uhd::time_spec_t diff = stop - start; - std::cout << "start: " << start.get_real_secs() << std::endl; - std::cout << "stop: " << stop.get_real_secs() << std::endl; - std::cout << "diff: " << diff.get_real_secs() << std::endl; - BOOST_CHECK(diff.get_real_secs() > 0); //assert positive - BOOST_CHECK(diff.get_real_secs() < 1.0); //assert under 1s -} - BOOST_AUTO_TEST_CASE(test_time_spec_neg_values){ uhd::time_spec_t ts1(0.3); uhd::time_spec_t ts2(1, -0.9); |