summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/basic_block.cc
diff options
context:
space:
mode:
authorTim O'Shea <tim.oshea753@gmail.com>2013-10-03 13:22:16 -0400
committerJohnathan Corgan <johnathan@corganlabs.com>2013-10-12 09:08:53 -0700
commite83d63263e95471f0fb48cdfbbc794b564e72703 (patch)
tree0e505b0546dba7e1fec80590e7c675d0a8dcdb23 /gnuradio-runtime/lib/basic_block.cc
parent7611baf87c925f6b9e10586caa1eedc8f5b45165 (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.cc33
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 */