From 36d1520f0ac73b64bd0541b422552a6d419c7ffd Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Fri, 28 Aug 2009 01:09:08 -0700 Subject: [PATCH] added virtual source and added stream ids, logic to clone in port --- grc/blocks/Makefile.am | 1 + grc/blocks/block_tree.xml | 1 + grc/blocks/virtual_sink.xml | 6 ++++++ grc/blocks/virtual_source.xml | 21 +++++++++++++++++++++ grc/python/Port.py | 20 +++++++++++++++----- 5 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 grc/blocks/virtual_source.xml diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am index 32866151..32ddc656 100644 --- a/grc/blocks/Makefile.am +++ b/grc/blocks/Makefile.am @@ -219,6 +219,7 @@ dist_ourdata_DATA = \ variable_static_text.xml \ variable_text_box.xml \ virtual_sink.xml \ + virtual_source.xml \ wxgui_constellationsink2.xml \ wxgui_fftsink2.xml \ wxgui_histosink2.xml \ diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml index 772320d1..5a989cc0 100644 --- a/grc/blocks/block_tree.xml +++ b/grc/blocks/block_tree.xml @@ -22,6 +22,7 @@ gr_wavfile_source gr_message_source pad_source + virtual_source Sinks diff --git a/grc/blocks/virtual_sink.xml b/grc/blocks/virtual_sink.xml index 314fb3dc..bd858522 100644 --- a/grc/blocks/virtual_sink.xml +++ b/grc/blocks/virtual_sink.xml @@ -8,6 +8,12 @@ Virtual Sink virtual_sink + + Stream ID + stream_id + + string + in diff --git a/grc/blocks/virtual_source.xml b/grc/blocks/virtual_source.xml new file mode 100644 index 00000000..11eb0c0f --- /dev/null +++ b/grc/blocks/virtual_source.xml @@ -0,0 +1,21 @@ + + + + Virtual Source + virtual_source + + + Stream ID + stream_id + + string + + + out + + + diff --git a/grc/python/Port.py b/grc/python/Port.py index dde736db..b386e3f8 100644 --- a/grc/python/Port.py +++ b/grc/python/Port.py @@ -69,13 +69,23 @@ class Port(_Port): Handle the port cloning for virtual blocks. """ _Port.rewrite(self) - #virtual sink logic - if self.get_parent().get_key() == 'virtual_sink': - if self.get_enabled_connections(): #clone type and vlen - source = self.get_enabled_connections()[0].get_source() + if self.get_parent().get_key() in ('virtual_sink', 'virtual_source'): + try: + if self.get_parent().get_key() == 'virtual_sink': + source = self.get_enabled_connections()[0].get_source() + if self.get_parent().get_key() == 'virtual_source': + source = filter( + lambda vs: vs.get_param('stream_id').get_value() == self.get_parent().get_param('stream_id').get_value(), + filter( + lambda b: b.get_key() == 'virtual_sink', + self.get_parent().get_parent().get_enabled_blocks(), + ), + )[0].get_sink('0').get_enabled_connections()[0].get_source() + #clone type and vlen self._type = str(source.get_type()) self._vlen = str(source.get_vlen()) - else: #reset type and vlen + except: + #reset type and vlen self._type = '' self._vlen = '' -- 2.30.2