From 586a3d39181bf7f75e4a0503a76096ee0153fc62 Mon Sep 17 00:00:00 2001 From: Balint Seeber Date: Fri, 24 Jul 2015 12:15:30 -0700 Subject: ks: wait one second with GPSDO for time to latch, checker thread for ref_locked --- tools/kitchen_sink/CMakeLists.txt | 9 +++++++++ tools/kitchen_sink/kitchen_sink.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/tools/kitchen_sink/CMakeLists.txt b/tools/kitchen_sink/CMakeLists.txt index b28a9e411..edbc33bd0 100644 --- a/tools/kitchen_sink/CMakeLists.txt +++ b/tools/kitchen_sink/CMakeLists.txt @@ -17,6 +17,15 @@ cmake_minimum_required(VERSION 2.8) +############################################################################### + +#select the release build type by default to get optimization flags +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") + message(STATUS "Build type not specified: defaulting to release.") +endif(NOT CMAKE_BUILD_TYPE) +set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") + ### Set up build environment ################################################## #### Set up Boost: set(BOOST_REQUIRED_COMPONENTS diff --git a/tools/kitchen_sink/kitchen_sink.cpp b/tools/kitchen_sink/kitchen_sink.cpp index f350f4516..e17ee6437 100644 --- a/tools/kitchen_sink/kitchen_sink.cpp +++ b/tools/kitchen_sink/kitchen_sink.cpp @@ -268,6 +268,33 @@ static void msg_handler(uhd::msg::type_t type, const std::string& msg) std::cout << msg << std::flush; } +/*********************************************************************** + * Checker thread + **********************************************************************/ + +void check_thread(uhd::usrp::multi_usrp::sptr usrp) +{ + { + std::stringstream ss; + ss << "(" << get_stringified_time() << ") Checker running..." << std::endl; + std::cout << ss.str(); + } + + while (running) + { + uhd::sensor_value_t ref_locked = usrp->get_mboard_sensor("ref_locked"); + if (ref_locked.to_bool() == false) { + std::stringstream ss; + ss << HEADER_WARN"(" << get_stringified_time() << ") " << boost::format("ref_locked: unlocked") << std::endl; + std::cout << ss.str(); + } + + boost::this_thread::sleep(boost::posix_time::seconds(0) + boost::posix_time::microseconds(1000 * 500)); // MAGIC + } + + std::cout << "Checker exiting..." << std::endl; +} + /*********************************************************************** * Benchmark RX Rate **********************************************************************/ @@ -1511,6 +1538,12 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ } } + if (usrp->get_time_source(0) == "gpsdo") + { + std::cout << boost::format(HEADER "Waiting for GPSDO time to latch") << std::endl; + sleep(1); + } + uhd::time_spec_t time_start = usrp->get_time_now(); // Usually DSP #0 on mboard #0 std::cout << boost::format(HEADER "Time now: %f seconds (%llu ticks)") % time_start.get_real_secs() % time_start.to_ticks(usrp->get_master_clock_rate()) << std::endl; @@ -1755,6 +1788,8 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ running = true; std::cout << HEADER "Begin..." << std::endl; + thread_group.create_thread(boost::bind(&check_thread, usrp)); + if (tx_channel_nums.size() > 0) tx_thread_begin.wait(l_tx); if (rx_channel_nums.size() > 0) -- cgit v1.2.3