diff options
Diffstat (limited to 'gnuradio-runtime/lib/top_block.cc')
-rw-r--r-- | gnuradio-runtime/lib/top_block.cc | 261 |
1 files changed, 116 insertions, 145 deletions
diff --git a/gnuradio-runtime/lib/top_block.cc b/gnuradio-runtime/lib/top_block.cc index 7d135083dd..fa3902c735 100644 --- a/gnuradio-runtime/lib/top_block.cc +++ b/gnuradio-runtime/lib/top_block.cc @@ -33,37 +33,33 @@ #include <iostream> namespace gr { - top_block_sptr - make_top_block(const std::string &name) - { - return gnuradio::get_initial_sptr - (new top_block(name)); - } - - top_block::top_block(const std::string &name) - : hier_block2(name, - io_signature::make(0,0,0), - io_signature::make(0,0,0)) - { +top_block_sptr make_top_block(const std::string& name) +{ + return gnuradio::get_initial_sptr(new top_block(name)); +} + +top_block::top_block(const std::string& name) + : hier_block2(name, io_signature::make(0, 0, 0), io_signature::make(0, 0, 0)) +{ d_impl = new top_block_impl(this); - } +} - top_block::~top_block() - { +top_block::~top_block() +{ stop(); wait(); delete d_impl; - } +} - void - top_block::start(int max_noutput_items) - { +void top_block::start(int max_noutput_items) +{ #ifdef GNURADIO_HRT_USE_CLOCK_GETTIME - std::string initial_clock = prefs::singleton()->get_string("PerfCounters", "clock", "thread"); - if(initial_clock.compare("thread") == 0){ + std::string initial_clock = + prefs::singleton()->get_string("PerfCounters", "clock", "thread"); + if (initial_clock.compare("thread") == 0) { gr::high_res_timer_source = CLOCK_THREAD_CPUTIME_ID; - } else if(initial_clock.compare("monotonic") == 0){ + } else if (initial_clock.compare("monotonic") == 0) { gr::high_res_timer_source = CLOCK_MONOTONIC; } else { throw std::runtime_error("bad argument for PerfCounters.clock!"); @@ -72,150 +68,125 @@ namespace gr { d_impl->start(max_noutput_items); - if(prefs::singleton()->get_bool("ControlPort", "on", false)) { - setup_rpc(); + if (prefs::singleton()->get_bool("ControlPort", "on", false)) { + setup_rpc(); } - } - - void - top_block::stop() - { - d_impl->stop(); - } - - void - top_block::wait() - { - d_impl->wait(); - } - - void - top_block::run(int max_noutput_items) - { +} + +void top_block::stop() { d_impl->stop(); } + +void top_block::wait() { d_impl->wait(); } + +void top_block::run(int max_noutput_items) +{ start(max_noutput_items); wait(); - } - - void - top_block::lock() - { - d_impl->lock(); - } - - void - top_block::unlock() - { - d_impl->unlock(); - } - - std::string - top_block::edge_list() - { - return d_impl->edge_list(); - } - - std::string - top_block::msg_edge_list() - { - return d_impl->msg_edge_list(); - } - - void - top_block::dump() - { - d_impl->dump(); - } - - int - top_block::max_noutput_items() - { - return d_impl->max_noutput_items(); - } - - void - top_block::set_max_noutput_items(int nmax) - { - d_impl->set_max_noutput_items(nmax); - } - - top_block_sptr - top_block::to_top_block() - { +} + +void top_block::lock() { d_impl->lock(); } + +void top_block::unlock() { d_impl->unlock(); } + +std::string top_block::edge_list() { return d_impl->edge_list(); } + +std::string top_block::msg_edge_list() { return d_impl->msg_edge_list(); } + +void top_block::dump() { d_impl->dump(); } + +int top_block::max_noutput_items() { return d_impl->max_noutput_items(); } + +void top_block::set_max_noutput_items(int nmax) { d_impl->set_max_noutput_items(nmax); } + +top_block_sptr top_block::to_top_block() +{ return cast_to_top_block_sptr(shared_from_this()); - } +} - void - top_block::setup_rpc() - { +void top_block::setup_rpc() +{ #ifdef GR_CTRLPORT - if(is_rpc_set()) - return; + if (is_rpc_set()) + return; // Triggers - d_rpc_vars.push_back( - rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( - alias(), "stop", &top_block::stop, - "Stop the flowgraph", RPC_PRIVLVL_MIN))); + d_rpc_vars.push_back(rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( + alias(), "stop", &top_block::stop, "Stop the flowgraph", RPC_PRIVLVL_MIN))); - d_rpc_vars.push_back( - rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( - alias(), "lock", &top_block::lock, - "Lock the flowgraph", RPC_PRIVLVL_MIN))); + d_rpc_vars.push_back(rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( + alias(), "lock", &top_block::lock, "Lock the flowgraph", RPC_PRIVLVL_MIN))); - d_rpc_vars.push_back( - rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( - alias(), "unlock", &top_block::unlock, - "Unock the flowgraph", RPC_PRIVLVL_MIN))); + d_rpc_vars.push_back(rpcbasic_sptr(new rpcbasic_register_trigger<top_block>( + alias(), "unlock", &top_block::unlock, "Unock the flowgraph", RPC_PRIVLVL_MIN))); // Getters - add_rpc_variable( - rpcbasic_sptr(new rpcbasic_register_get<top_block, int>( - alias(), "max noutput_items", - &top_block::max_noutput_items, - pmt::mp(0), pmt::mp(8192), pmt::mp(8192), - "items", "Max number of output items", - RPC_PRIVLVL_MIN, DISPNULL))); - - if(prefs::singleton()->get_bool("ControlPort", "edges_list", false)) { - add_rpc_variable( - rpcbasic_sptr(new rpcbasic_register_get<top_block, std::string>( - alias(), "edge list", - &top_block::edge_list, - pmt::mp(""), pmt::mp(""), pmt::mp(""), - "edges", "List of edges in the graph", - RPC_PRIVLVL_MIN, DISPNULL))); + add_rpc_variable(rpcbasic_sptr( + new rpcbasic_register_get<top_block, int>(alias(), + "max noutput_items", + &top_block::max_noutput_items, + pmt::mp(0), + pmt::mp(8192), + pmt::mp(8192), + "items", + "Max number of output items", + RPC_PRIVLVL_MIN, + DISPNULL))); + + if (prefs::singleton()->get_bool("ControlPort", "edges_list", false)) { + add_rpc_variable(rpcbasic_sptr(new rpcbasic_register_get<top_block, std::string>( + alias(), + "edge list", + &top_block::edge_list, + pmt::mp(""), + pmt::mp(""), + pmt::mp(""), + "edges", + "List of edges in the graph", + RPC_PRIVLVL_MIN, + DISPNULL))); } - if(prefs::singleton()->get_bool("ControlPort", "edges_list", false)) { - add_rpc_variable( - rpcbasic_sptr(new rpcbasic_register_get<top_block, std::string>( - alias(), "msg edges list", - &top_block::msg_edge_list, - pmt::mp(""), pmt::mp(""), pmt::mp(""), - "msg_edges", "List of msg edges in the graph", - RPC_PRIVLVL_MIN, DISPNULL))); + if (prefs::singleton()->get_bool("ControlPort", "edges_list", false)) { + add_rpc_variable(rpcbasic_sptr(new rpcbasic_register_get<top_block, std::string>( + alias(), + "msg edges list", + &top_block::msg_edge_list, + pmt::mp(""), + pmt::mp(""), + pmt::mp(""), + "msg_edges", + "List of msg edges in the graph", + RPC_PRIVLVL_MIN, + DISPNULL))); } #ifdef GNURADIO_HRT_USE_CLOCK_GETTIME - add_rpc_variable( - rpcbasic_sptr(new rpcbasic_register_variable_rw<int>( - alias(), "perfcounter_clock", - (int*)&gr::high_res_timer_source, - pmt::mp(0), pmt::mp(2), pmt::mp(2), - "clock", "Performance Counters Realtime Clock Type", - RPC_PRIVLVL_MIN, DISPNULL))); + add_rpc_variable(rpcbasic_sptr( + new rpcbasic_register_variable_rw<int>(alias(), + "perfcounter_clock", + (int*)&gr::high_res_timer_source, + pmt::mp(0), + pmt::mp(2), + pmt::mp(2), + "clock", + "Performance Counters Realtime Clock Type", + RPC_PRIVLVL_MIN, + DISPNULL))); #endif // Setters - add_rpc_variable( - rpcbasic_sptr(new rpcbasic_register_set<top_block, int>( - alias(), "max noutput_items", - &top_block::set_max_noutput_items, - pmt::mp(0), pmt::mp(8192), pmt::mp(8192), - "items", "Max number of output items", - RPC_PRIVLVL_MIN, DISPNULL))); + add_rpc_variable(rpcbasic_sptr( + new rpcbasic_register_set<top_block, int>(alias(), + "max noutput_items", + &top_block::set_max_noutput_items, + pmt::mp(0), + pmt::mp(8192), + pmt::mp(8192), + "items", + "Max number of output items", + RPC_PRIVLVL_MIN, + DISPNULL))); rpc_set(); #endif /* GR_CTRLPORT */ - } +} } /* namespace gr */ |