diff options
Diffstat (limited to 'gr-uhd/examples/c++')
-rw-r--r-- | gr-uhd/examples/c++/CMakeLists.txt | 45 | ||||
-rw-r--r-- | gr-uhd/examples/c++/tag_sink_demo.h | 66 | ||||
-rw-r--r-- | gr-uhd/examples/c++/tag_source_demo.h | 128 | ||||
-rw-r--r-- | gr-uhd/examples/c++/tags_demo.cc | 139 |
4 files changed, 0 insertions, 378 deletions
diff --git a/gr-uhd/examples/c++/CMakeLists.txt b/gr-uhd/examples/c++/CMakeLists.txt deleted file mode 100644 index a6c9891d7..000000000 --- a/gr-uhd/examples/c++/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2011 Free Software Foundation, Inc. -# -# This file is part of GNU Radio -# -# GNU Radio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Radio is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Radio; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, -# Boston, MA 02110-1301, USA. - -######################################################################## -# Setup the include and linker paths -######################################################################## -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${GR_UHD_INCLUDE_DIRS} - ${GNURADIO_CORE_INCLUDE_DIRS} - ${GRUEL_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} - ${UHD_INCLUDE_DIRS} -) - -link_directories(${UHD_LIBRARY_DIRS}) -link_directories(${Boost_LIBRARY_DIRS}) - -######################################################################## -# Build executable -######################################################################## -add_executable(tags_demo tags_demo.cc) -target_link_libraries(tags_demo gnuradio-uhd) - -INSTALL(TARGETS - tags_demo - DESTINATION ${GR_PKG_UHD_EXAMPLES_DIR} - COMPONENT "uhd_examples" -) diff --git a/gr-uhd/examples/c++/tag_sink_demo.h b/gr-uhd/examples/c++/tag_sink_demo.h deleted file mode 100644 index 5417bd324..000000000 --- a/gr-uhd/examples/c++/tag_sink_demo.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2011 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include <gr_sync_block.h> -#include <gr_io_signature.h> -#include <boost/foreach.hpp> -#include <boost/format.hpp> -#include <iostream> -#include <complex> - -class tag_sink_demo : public gr_sync_block{ -public: - - tag_sink_demo(void): - gr_sync_block( - "uhd tag sink demo", - gr_make_io_signature(1, 1, sizeof(std::complex<float>)), - gr_make_io_signature(0, 0, 0) - ) - { - //NOP - } - - int work( - int ninput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items - ){ - //grab all "rx time" tags in this work call - const uint64_t samp0_count = this->nitems_read(0); - std::vector<gr_tag_t> rx_time_tags; - get_tags_in_range(rx_time_tags, 0, samp0_count, samp0_count + ninput_items, pmt::pmt_string_to_symbol("rx_time")); - - //print all tags - BOOST_FOREACH(const gr_tag_t &rx_time_tag, rx_time_tags){ - const uint64_t offset = rx_time_tag.offset; - const pmt::pmt_t &value = rx_time_tag.value; - - std::cout << boost::format("Full seconds %u, Frac seconds %f, abs sample offset %u") - % pmt::pmt_to_uint64(pmt::pmt_tuple_ref(value, 0)) - % pmt::pmt_to_double(pmt::pmt_tuple_ref(value, 1)) - % offset - << std::endl; - } - - return ninput_items; - } -}; diff --git a/gr-uhd/examples/c++/tag_source_demo.h b/gr-uhd/examples/c++/tag_source_demo.h deleted file mode 100644 index 7d48502b2..000000000 --- a/gr-uhd/examples/c++/tag_source_demo.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2011 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include <gr_sync_block.h> -#include <gr_io_signature.h> -#include <boost/foreach.hpp> -#include <boost/format.hpp> -#include <iostream> -#include <complex> - -class tag_source_demo : public gr_sync_block{ -public: - - tag_source_demo( - const uint64_t start_secs, - const double start_fracs, - const double samp_rate, - const double idle_duration, - const double burst_duration - ): - gr_sync_block( - "uhd tag source demo", - gr_make_io_signature(0, 0, 0), - gr_make_io_signature(1, 1, sizeof(std::complex<float>)) - ), - _time_secs(start_secs), - _time_fracs(start_fracs), - _samp_rate(samp_rate), - _samps_per_burst(samp_rate*burst_duration), - _cycle_duration(idle_duration + burst_duration), - _samps_left_in_burst(1), //immediate EOB - _do_new_burst(false) - { - //NOP - } - - void make_time_tag(const uint64_t tag_count){; - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_time"); - const pmt::pmt_t value = pmt::pmt_make_tuple( - pmt::pmt_from_uint64(_time_secs), - pmt::pmt_from_double(_time_fracs) - ); - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); - this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); - } - - void make_sob_tag(const uint64_t tag_count){ - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_sob"); - const pmt::pmt_t value = pmt::PMT_T; - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); - this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); - } - - void make_eob_tag(const uint64_t tag_count){; - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_eob"); - const pmt::pmt_t value = pmt::PMT_T; - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); - this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); - } - - int work( - int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items - ){ - //load the output with a constant - std::complex<float> *output = reinterpret_cast<std::complex<float> *>(output_items[0]); - for (size_t i = 0; i < size_t(noutput_items); i++){ - output[i] = std::complex<float>(0.7, 0.7); - } - - //Handle the start of burst condition. - //Tag a start of burst and timestamp. - //Increment the time for the next burst. - if (_do_new_burst){ - _do_new_burst = false; - _samps_left_in_burst = _samps_per_burst; - - this->make_sob_tag(this->nitems_written(0)); - this->make_time_tag(this->nitems_written(0)); - - _time_fracs += _cycle_duration; - double intpart; //normalize - _time_fracs = std::modf(_time_fracs, &intpart); - _time_secs += uint64_t(intpart); - } - - //Handle the end of burst condition. - //Tag an end of burst and return early. - //the next work call will be a start of burst. - if (_samps_left_in_burst < size_t(noutput_items)){ - this->make_eob_tag(this->nitems_written(0) + _samps_left_in_burst - 1); - _do_new_burst = true; - noutput_items = _samps_left_in_burst; - } - - _samps_left_in_burst -= noutput_items; - return noutput_items; - } - -private: - uint64_t _time_secs; - double _time_fracs; - const double _samp_rate; - const uint64_t _samps_per_burst; - const double _cycle_duration; - uint64_t _samps_left_in_burst; - bool _do_new_burst; - -}; diff --git a/gr-uhd/examples/c++/tags_demo.cc b/gr-uhd/examples/c++/tags_demo.cc deleted file mode 100644 index cc4c93272..000000000 --- a/gr-uhd/examples/c++/tags_demo.cc +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2011 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include <gr_top_block.h> -#include <gr_uhd_usrp_source.h> -#include <gr_uhd_usrp_sink.h> -#include <tag_source_demo.h> -#include <tag_sink_demo.h> -#include <boost/make_shared.hpp> -#include <boost/thread/thread.hpp> //sleep -#include <boost/program_options.hpp> -#include <csignal> -#include <iostream> - -namespace po = boost::program_options; - -/*********************************************************************** - * Signal handlers - **********************************************************************/ -static bool stop_signal_called = false; -void sig_int_handler(int){stop_signal_called = true;} - -/*********************************************************************** - * Main w/ program options - **********************************************************************/ -int main(int argc, char *argv[]){ - - std::string device_addr; - double center_freq, samp_rate, burst_dur, idle_dur; - - //setup the program options - po::options_description desc("Allowed options"); - desc.add_options() - ("help", "help message") - ("addr", po::value<std::string>(&device_addr)->default_value(""), "the device address in string format") - ("rate", po::value<double>(&samp_rate)->default_value(1e6), "the sample rate in samples per second") - ("freq", po::value<double>(¢er_freq)->default_value(10e6), "the center frequency in Hz") - ("burst", po::value<double>(&burst_dur)->default_value(0.1), "the duration of each burst in seconds") - ("idle", po::value<double>(&idle_dur)->default_value(0.05), "idle time between bursts in seconds") - ; - po::variables_map vm; - po::store(po::parse_command_line(argc, argv, desc), vm); - po::notify(vm); - - //print the help message - if (vm.count("help")){ - std::cout - << boost::format("UHD Tags Demo %s") % desc << std::endl - << "The tags sink demo block will print USRP source time stamps." << std::endl - << "The tags source demo block will send bursts to the USRP sink." << std::endl - << "Look at the USRP output on a scope to see the timed bursts." << std::endl - << std::endl; - return ~0; - } - - //------------------------------------------------------------------ - //-- make a top block - //------------------------------------------------------------------ - gr_top_block_sptr tb = gr_make_top_block("tags_demo"); - - //------------------------------------------------------------------ - //-- make the usrp source test blocks - //------------------------------------------------------------------ - boost::shared_ptr<uhd_usrp_source> usrp_source = uhd_make_usrp_source( - device_addr, uhd::stream_args_t("fc32") - ); - usrp_source->set_samp_rate(samp_rate); - usrp_source->set_center_freq(center_freq); - - boost::shared_ptr<tag_sink_demo> tag_sink = boost::make_shared<tag_sink_demo>(); - - //------------------------------------------------------------------ - //-- connect the usrp source test blocks - //------------------------------------------------------------------ - tb->connect(usrp_source, 0, tag_sink, 0); - - //------------------------------------------------------------------ - //-- make the usrp sink test blocks - //------------------------------------------------------------------ - boost::shared_ptr<uhd_usrp_sink> usrp_sink = uhd_make_usrp_sink( - device_addr, uhd::stream_args_t("fc32") - ); - usrp_sink->set_samp_rate(samp_rate); - usrp_sink->set_center_freq(center_freq); - const uhd::time_spec_t time_now = usrp_sink->get_time_now(); - - boost::shared_ptr<tag_source_demo> tag_source = boost::make_shared<tag_source_demo>( - time_now.get_full_secs() + 1, time_now.get_frac_secs(), //time now + 1 second - samp_rate, idle_dur, burst_dur - ); - - //------------------------------------------------------------------ - //-- connect the usrp sink test blocks - //------------------------------------------------------------------ - tb->connect(tag_source, 0, usrp_sink, 0); - - //------------------------------------------------------------------ - //-- start flow graph execution - //------------------------------------------------------------------ - std::cout << "starting flow graph" << std::endl; - tb->start(); - - //------------------------------------------------------------------ - //-- poll the exit signal while running - //------------------------------------------------------------------ - std::signal(SIGINT, &sig_int_handler); - std::cout << "press ctrl + c to exit" << std::endl; - while (not stop_signal_called){ - boost::this_thread::sleep(boost::posix_time::milliseconds(100)); - } - - //------------------------------------------------------------------ - //-- stop flow graph execution - //------------------------------------------------------------------ - std::cout << "stopping flow graph" << std::endl; - tb->stop(); - tb->wait(); - - std::cout << "done!" << std::endl; - return 0; -} |