diff options
author | Tim O'Shea <tim.oshea753@gmail.com> | 2013-10-03 13:22:16 -0400 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2013-10-12 09:08:53 -0700 |
commit | e83d63263e95471f0fb48cdfbbc794b564e72703 (patch) | |
tree | 0e505b0546dba7e1fec80590e7c675d0a8dcdb23 /gnuradio-runtime/lib/basic_block.cc | |
parent | 7611baf87c925f6b9e10586caa1eedc8f5b45165 (diff) |
runtime: expose message_subscribers() interface to python blocks
Diffstat (limited to 'gnuradio-runtime/lib/basic_block.cc')
-rw-r--r-- | gnuradio-runtime/lib/basic_block.cc | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/gnuradio-runtime/lib/basic_block.cc b/gnuradio-runtime/lib/basic_block.cc index 8060c5355c..40edf09b01 100644 --- a/gnuradio-runtime/lib/basic_block.cc +++ b/gnuradio-runtime/lib/basic_block.cc @@ -52,7 +52,7 @@ namespace gr { d_symbol_name(global_block_registry.register_symbolic_name(this)), d_color(WHITE), d_rpc_set(false), - message_subscribers(pmt::make_dict()) + d_message_subscribers(pmt::make_dict()) { s_ncurrently_allocated++; } @@ -107,18 +107,18 @@ namespace gr { if(!pmt::is_symbol(port_id)) { throw std::runtime_error("message_port_register_out: bad port id"); } - if(pmt::dict_has_key(message_subscribers, port_id)) { + if(pmt::dict_has_key(d_message_subscribers, port_id)) { throw std::runtime_error("message_port_register_out: port already in use"); } - message_subscribers = pmt::dict_add(message_subscribers, port_id, pmt::PMT_NIL); + d_message_subscribers = pmt::dict_add(d_message_subscribers, port_id, pmt::PMT_NIL); } pmt::pmt_t basic_block::message_ports_out() { - size_t len = pmt::length(message_subscribers); + size_t len = pmt::length(d_message_subscribers); pmt::pmt_t port_names = pmt::make_vector(len, pmt::PMT_NIL); - pmt::pmt_t keys = pmt::dict_keys(message_subscribers); + pmt::pmt_t keys = pmt::dict_keys(d_message_subscribers); for(size_t i = 0; i < len; i++) { pmt::vector_set(port_names, i, pmt::nth(i, keys)); } @@ -128,11 +128,11 @@ namespace gr { // - publish a message on a message port void basic_block::message_port_pub(pmt::pmt_t port_id, pmt::pmt_t msg) { - if(!pmt::dict_has_key(message_subscribers, port_id)) { + if(!pmt::dict_has_key(d_message_subscribers, port_id)) { throw std::runtime_error("port does not exist"); } - pmt::pmt_t currlist = pmt::dict_ref(message_subscribers, port_id, pmt::PMT_NIL); + pmt::pmt_t currlist = pmt::dict_ref(d_message_subscribers, port_id, pmt::PMT_NIL); // iterate through subscribers on port while(pmt::is_pair(currlist)) { pmt::pmt_t target = pmt::car(currlist); @@ -150,23 +150,23 @@ namespace gr { // - subscribe to a message port void basic_block::message_port_sub(pmt::pmt_t port_id, pmt::pmt_t target){ - if(!pmt::dict_has_key(message_subscribers, port_id)){ + if(!pmt::dict_has_key(d_message_subscribers, port_id)){ std::stringstream ss; ss << "Port does not exist: \"" << pmt::write_string(port_id) << "\" on block: " << pmt::write_string(target) << std::endl; throw std::runtime_error(ss.str()); } - pmt::pmt_t currlist = pmt::dict_ref(message_subscribers,port_id,pmt::PMT_NIL); + pmt::pmt_t currlist = pmt::dict_ref(d_message_subscribers,port_id,pmt::PMT_NIL); // ignore re-adds of the same target if(!pmt::list_has(currlist, target)) - message_subscribers = pmt::dict_add(message_subscribers,port_id,pmt::list_add(currlist,target)); + d_message_subscribers = pmt::dict_add(d_message_subscribers,port_id,pmt::list_add(currlist,target)); } void basic_block::message_port_unsub(pmt::pmt_t port_id, pmt::pmt_t target) { - if(!pmt::dict_has_key(message_subscribers, port_id)) { + if(!pmt::dict_has_key(d_message_subscribers, port_id)) { std::stringstream ss; ss << "Port does not exist: \"" << pmt::write_string(port_id) << "\" on block: " << pmt::write_string(target) << std::endl; @@ -174,8 +174,8 @@ namespace gr { } // ignore unsubs of unknown targets - pmt::pmt_t currlist = pmt::dict_ref(message_subscribers,port_id,pmt::PMT_NIL); - message_subscribers = pmt::dict_add(message_subscribers,port_id,pmt::list_rm(currlist,target)); + pmt::pmt_t currlist = pmt::dict_ref(d_message_subscribers,port_id,pmt::PMT_NIL); + d_message_subscribers = pmt::dict_add(d_message_subscribers,port_id,pmt::list_rm(currlist,target)); } void @@ -230,4 +230,11 @@ namespace gr { return m; } + pmt::pmt_t + basic_block::message_subscribers(pmt::pmt_t port) + { + return pmt::dict_ref(d_message_subscribers,port,pmt::PMT_NIL); + } + + } /* namespace gr */ |