added virtual source and added stream ids, logic to clone in port
authorJosh Blum <josh@joshknows.com>
Fri, 28 Aug 2009 08:09:08 +0000 (01:09 -0700)
committerJosh Blum <josh@joshknows.com>
Fri, 28 Aug 2009 08:09:08 +0000 (01:09 -0700)
grc/blocks/Makefile.am
grc/blocks/block_tree.xml
grc/blocks/virtual_sink.xml
grc/blocks/virtual_source.xml [new file with mode: 0644]
grc/python/Port.py

index 328661510b6783ac87c8bced9d3b67f6ea5de425..32ddc6567f3bbc6fbf4559262edd5e1c579b173b 100644 (file)
@@ -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 \
index 772320d1b2413bda43afc88a08c784c58d9a8a90..5a989cc018d6ba211360d693bac0711ae6d127d6 100644 (file)
@@ -22,6 +22,7 @@
                <block>gr_wavfile_source</block>
                <block>gr_message_source</block>
                <block>pad_source</block>
+               <block>virtual_source</block>
        </cat>
        <cat>
                <name>Sinks</name>
index 314fb3dc9499980866a219735bd7222ac78588bc..bd858522b24e64fada863380d8eacdceb9a8f715 100644 (file)
@@ -8,6 +8,12 @@
        <name>Virtual Sink</name>
        <key>virtual_sink</key>
        <make></make>
+       <param>
+               <name>Stream ID</name>
+               <key>stream_id</key>
+               <value></value>
+               <type>string</type>
+       </param>
        <sink>
                <name>in</name>
                <type></type>
diff --git a/grc/blocks/virtual_source.xml b/grc/blocks/virtual_source.xml
new file mode 100644 (file)
index 0000000..11eb0c0
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Virtual Source
+###################################################
+ -->
+<block>
+       <name>Virtual Source</name>
+       <key>virtual_source</key>
+       <make></make>
+       <param>
+               <name>Stream ID</name>
+               <key>stream_id</key>
+               <value></value>
+               <type>string</type>
+       </param>
+       <source>
+               <name>out</name>
+               <type></type>
+       </source>
+</block>
index dde736dbaae4e720bfa9d7dc9d52cfe446c0e2e2..b386e3f89aa2c1928345c8a17d0dcea9fcd4523a 100644 (file)
@@ -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 = ''