summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2017-08-03 14:22:24 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2017-08-03 14:22:24 -0700
commitda2ceabe3a5e2ac0a79055a441fa26adf13cf9a3 (patch)
treec892e4cd0377db61d2b07f5cc80fd3b9d9c401f3
parent9b0a00b4d27004966ad668a9fa448662f0f2981e (diff)
parent9757127f21ebcede6bdf81b5031945df1aac757b (diff)
Merge remote-tracking branch 'github/pr/1396'
-rw-r--r--gnuradio-runtime/include/gnuradio/block_gateway.h5
-rw-r--r--gr-blocks/python/blocks/qa_block_gateway.py25
2 files changed, 30 insertions, 0 deletions
diff --git a/gnuradio-runtime/include/gnuradio/block_gateway.h b/gnuradio-runtime/include/gnuradio/block_gateway.h
index 060e525358..bb0c26f8f2 100644
--- a/gnuradio-runtime/include/gnuradio/block_gateway.h
+++ b/gnuradio-runtime/include/gnuradio/block_gateway.h
@@ -41,6 +41,11 @@ namespace gr {
GR_BLOCK_GW_WORK_INTERP,
};
+ //! Magic return values from general_work, \ref gr::block::WORK_CALLED_PRODUCE
+ enum block_gw_work_return_type{
+ WORK_CALLED_PRODUCE = -2,
+ WORK_DONE = -1
+ };
enum tag_propagation_policy_t {
TPP_DONT = 0,
TPP_ALL_TO_ALL = 1,
diff --git a/gr-blocks/python/blocks/qa_block_gateway.py b/gr-blocks/python/blocks/qa_block_gateway.py
index 1e848cff04..6fdb0090ae 100644
--- a/gr-blocks/python/blocks/qa_block_gateway.py
+++ b/gr-blocks/python/blocks/qa_block_gateway.py
@@ -25,6 +25,19 @@ import pmt
from gnuradio import gr, gr_unittest, blocks
+
+class non_sync_block(gr.basic_block):
+ def __init__(self):
+ gr.basic_block.__init__(self,
+ name="non_sync_block",
+ in_sig=[numpy.float32],
+ out_sig=[numpy.float32, numpy.float32])
+ def general_work(self, input_items, output_items):
+ self.consume(0, len(input_items[0]))
+ self.produce(0,2)
+ self.produce(1,1)
+ return gr.WORK_CALLED_PRODUCE
+
class add_2_f32_1_f32(gr.sync_block):
def __init__(self):
gr.sync_block.__init__(
@@ -275,5 +288,17 @@ class test_block_gateway(gr_unittest.TestCase):
tb.run()
self.assertEqual(sink.data(), (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
+ def test_non_sync_block(self):
+ tb = gr.top_block ()
+ src = blocks.vector_source_f(range(1000000))
+ sinks = [blocks.vector_sink_f(), blocks.vector_sink_f()]
+ dut = non_sync_block()
+ tb.connect(src, dut)
+ tb.connect((dut,0), sinks[0])
+ tb.connect((dut,1), sinks[1])
+ tb.run ()
+ self.assertEqual(len(sinks[0].data()), 2*len(sinks[1].data()))
+
+
if __name__ == '__main__':
gr_unittest.run(test_block_gateway, "test_block_gateway.xml")