summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2016-10-02 09:12:01 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2016-10-02 09:12:01 -0700
commitea2aeca576081806597a436a5380bc43a9eb11d1 (patch)
tree4686dc80bd7b5e782f1b9c00831eb52dcebf8a89
parent8d8fffafb20c5d894e478ded9111f1a503131ef1 (diff)
parent3ba6a665bc0b60c709eeaddce47dcfb92436357f (diff)
Merge remote-tracking branch 'bastibl/connect_msg_ports' into maint
-rw-r--r--gnuradio-runtime/lib/flat_flowgraph.cc9
-rwxr-xr-xgnuradio-runtime/python/gnuradio/gr/qa_flowgraph.py58
2 files changed, 67 insertions, 0 deletions
diff --git a/gnuradio-runtime/lib/flat_flowgraph.cc b/gnuradio-runtime/lib/flat_flowgraph.cc
index 434a92fb3d..b7e949127a 100644
--- a/gnuradio-runtime/lib/flat_flowgraph.cc
+++ b/gnuradio-runtime/lib/flat_flowgraph.cc
@@ -316,6 +316,15 @@ namespace gr {
setup_buffer_alignment(block);
}
+ // Connect message ports connetions
+ for(msg_edge_viter_t i = d_msg_edges.begin(); i != d_msg_edges.end(); i++) {
+ if(FLAT_FLOWGRAPH_DEBUG)
+ std::cout << boost::format("flat_fg connecting msg primitives: (%s, %s)->(%s, %s)\n") %
+ i->src().block() % i->src().port() %
+ i->dst().block() % i->dst().port();
+ i->src().block()->message_port_sub(i->src().port(), pmt::cons(i->dst().block()->alias_pmt(), i->dst().port()));
+ }
+
// Now deal with the fact that the block details might have
// changed numbers of inputs and outputs vs. in the old
// flowgraph.
diff --git a/gnuradio-runtime/python/gnuradio/gr/qa_flowgraph.py b/gnuradio-runtime/python/gnuradio/gr/qa_flowgraph.py
new file mode 100755
index 0000000000..fa4fd4910e
--- /dev/null
+++ b/gnuradio-runtime/python/gnuradio/gr/qa_flowgraph.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+#
+# Copyright 2016 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.
+#
+
+import time
+import pmt
+from gnuradio import gr, gr_unittest, blocks
+
+class test_flowgraph (gr_unittest.TestCase):
+
+ def setUp (self):
+ self.tb = gr.top_block ()
+
+ def tearDown (self):
+ self.tb = None
+
+ def test_000(self):
+
+ self.tb.start()
+ self.tb.lock()
+
+ rem = blocks.pdu_remove(pmt.intern('foo'))
+ dbg = blocks.message_debug()
+ self.tb.msg_connect((rem, 'pdus'), (dbg, 'store'))
+
+ self.tb.unlock()
+
+ msg = pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(3, (1, 2, 3)))
+ rem.to_basic_block()._post(pmt.intern('pdus'), msg)
+ time.sleep(0.2)
+
+ self.tb.stop()
+
+ self.assertEqual(dbg.num_messages(), 1)
+ data = pmt.u8vector_elements(pmt.cdr(dbg.get_message(0)))
+ self.assertEqual((1, 2, 3), data)
+
+if __name__ == '__main__':
+ gr_unittest.run(test_flowgraph, 'test_flowgraph.xml')
+