diff options
-rw-r--r-- | gnuradio-runtime/include/gnuradio/block.h | 6 | ||||
-rw-r--r-- | gnuradio-runtime/lib/block.cc | 17 |
2 files changed, 13 insertions, 10 deletions
diff --git a/gnuradio-runtime/include/gnuradio/block.h b/gnuradio-runtime/include/gnuradio/block.h index 473b94c155..eac8845448 100644 --- a/gnuradio-runtime/include/gnuradio/block.h +++ b/gnuradio-runtime/include/gnuradio/block.h @@ -684,6 +684,8 @@ namespace gr { bool d_update_rate; // should sched update rel rate? bool d_finished; // true if msg ports think we are finished + static const pmt::pmt_t d_pmt_done; + protected: block(void) {} // allows pure virtual interface sub-classes block(const std::string &name, @@ -861,6 +863,10 @@ namespace gr { // These are really only for internal use, but leaving them public avoids // having to work up an ever-varying list of friend GR_RUNTIME_APIs + /*! PMT Symbol of the system port, `pmt::mp("system")` + */ + static const pmt::pmt_t d_system_port; + public: block_detail_sptr detail() const { return d_detail; } void set_detail(block_detail_sptr detail) { d_detail = detail; } diff --git a/gnuradio-runtime/lib/block.cc b/gnuradio-runtime/lib/block.cc index 2bae8ea9f8..c7eafb0fc7 100644 --- a/gnuradio-runtime/lib/block.cc +++ b/gnuradio-runtime/lib/block.cc @@ -34,6 +34,9 @@ namespace gr { + const pmt::pmt_t block::d_system_port = pmt::intern("system"); + const pmt::pmt_t block::d_pmt_done = pmt::intern("done"); + block::block(const std::string &name, io_signature::sptr input_signature, io_signature::sptr output_signature) @@ -57,8 +60,8 @@ namespace gr { d_min_output_buffer(std::max(output_signature->max_streams(),1), -1) { global_block_registry.register_primitive(alias(), this); - message_port_register_in(pmt::mp("system")); - set_msg_handler(pmt::mp("system"), boost::bind(&block::system_handler, this, _1)); + message_port_register_in(d_system_port); + set_msg_handler(d_system_port, boost::bind(&block::system_handler, this, _1)); configure_default_loggers(d_logger, d_debug_logger, symbol_name()); } @@ -706,7 +709,7 @@ namespace gr { { //std::cout << "system_handler " << msg << "\n"; pmt::pmt_t op = pmt::car(msg); - if(pmt::eqv(op, pmt::mp("done"))){ + if(pmt::eqv(op, d_pmt_done)){ d_finished = pmt::to_long(pmt::cdr(msg)); global_block_registry.notify_blk(alias()); } else { @@ -733,16 +736,10 @@ namespace gr { pmt::pmt_t target = pmt::car(currlist); pmt::pmt_t block = pmt::car(target); - pmt::pmt_t port = pmt::mp("system"); currlist = pmt::cdr(currlist); basic_block_sptr blk = global_block_registry.block_lookup(block); - blk->post(port, pmt::cons(pmt::mp("done"), pmt::mp(true))); - - //std::cout << "notify finished --> "; - //pmt::print(pmt::cons(block,port)); - //std::cout << "\n"; - + blk->post(d_system_port, pmt::cons(d_pmt_done, pmt::mp(true))); } } } |