commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4999 - in gnuradio/branches/developers/jcorgan/hier2:


From: jcorgan
Subject: [Commit-gnuradio] r4999 - in gnuradio/branches/developers/jcorgan/hier2: gnuradio-core/src/python/gnuradio/gr gnuradio-examples/python/hier/audio
Date: Fri, 13 Apr 2007 16:15:17 -0600 (MDT)

Author: jcorgan
Date: 2007-04-13 16:15:17 -0600 (Fri, 13 Apr 2007)
New Revision: 4999

Modified:
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
   
gnuradio/branches/developers/jcorgan/hier2/gnuradio-examples/python/hier/audio/dial_tone2.py
Log:
Work in progress.  gr.hier_block2 API is now consistent with the existing 
gr.flow_graph API.  Only dial_tone2.py has been converted.

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
      2007-04-13 20:35:14 UTC (rev 4998)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/hier_block2.py
      2007-04-13 22:15:17 UTC (rev 4999)
@@ -38,14 +38,45 @@
     def __getattr__(self, name):
        return getattr(self._hb, name)
 
-    def connect(self, src, src_port, dst, dst_port):
-        return self._hb.connect(src.basic_block(), src_port,
-                                dst.basic_block(), dst_port)
+    def connect(self, *points):
+        '''connect requires two or more arguments that can be coerced to 
endpoints.
+        If more than two arguments are provided, they are connected together 
successively.
+        '''
+        if len (points) < 2:
+            raise ValueError, ("connect requires at least two endpoints; %d 
provided." % (len (points),))
+        for i in range (1, len (points)):
+            self._connect(points[i-1], points[i])
 
-    def disconnect(self, src, src_port, dst, dst_port):
-        return self._hb.disconnect(src.basic_block(), src_port,
-                                  dst.basic_block(), dst_port)
+    def _connect(self, src, dst):
+        (src_block, src_port) = self._coerce_endpoint(src)
+        (dst_block, dst_port) = self._coerce_endpoint(dst)
+        self._hb.connect(src_block.basic_block(), src_port,
+                         dst_block.basic_block(), dst_port)
 
+    def _coerce_endpoint(self, endp):
+        if hasattr(endp, 'basic_block'):
+            return (endp, 0)
+        else:
+            if hasattr(endp, "__getitem__") and len(endp) == 2:
+                return endp # Assume user put (block, port)
+            else:
+                raise ValueError("unable to coerce endpoint")
+
+    def disconnect(self, *points):
+        '''connect requires two or more arguments that can be coerced to 
endpoints.
+        If more than two arguments are provided, they are disconnected 
successively.
+        '''
+        if len (points) < 2:
+            raise ValueError, ("disconnect requires at least two endpoints; %d 
provided." % (len (points),))
+        for i in range (1, len (points)):
+            self._disconnect(points[i-1], points[i])
+
+    def _disconnect(self, src, dst):
+        (src_block, src_port) = self._coerce_endpoint(src)
+        (dst_block, dst_port) = self._coerce_endpoint(dst)
+        self._hb.disconnect(src_block.basic_block(), src_port,
+                            dst_block.basic_block(), dst_port)
+
 # Convenience class to create a no input, no output block for runtime top block
 class top_block(hier_block2):
     def __init__(self, name):

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
   2007-04-13 20:35:14 UTC (rev 4998)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
   2007-04-13 22:15:17 UTC (rev 4999)
@@ -26,21 +26,21 @@
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
        nop2 = gr.nop(gr.sizeof_int)
-       hblock.connect(nop1, 0, nop2, 0)
+       hblock.connect(nop1, nop2)
 
     def test_002_connect_input(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
-       hblock.connect(hblock, 0, nop1, 0)
+       hblock.connect(hblock, nop1)
 
     def test_003_connect_output(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
-       hblock.connect(nop1, 0, hblock, 0)
+       hblock.connect(nop1, hblock)
 
     def test_004_connect_invalid_src_port_neg(self):
        hblock = gr.hier_block2("test_block", 
@@ -48,7 +48,7 @@
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(hblock, -1, nop1, 0))
+           lambda: hblock.connect((hblock, -1), nop1))
 
     def test_005_connect_invalid_src_port_exceeds(self):
        hblock = gr.hier_block2("test_block", 
@@ -56,7 +56,7 @@
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(hblock, 1, nop1, 0))
+           lambda: hblock.connect((hblock, 1), nop1))
 
     def test_006_connect_invalid_dst_port_neg(self):
        hblock = gr.hier_block2("test_block", 
@@ -64,57 +64,50 @@
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(hblock, 0, nop1, -1))
-           
+           lambda: hblock.connect(hblock, (nop1, -1)))
+
     def test_007_connect_invalid_dst_port_exceeds(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.null_sink(gr.sizeof_int)
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(hblock, 0, nop1, 1))
+           lambda: hblock.connect(hblock, (nop1, 1)))
 
     def test_008_connect_dst_port_in_use(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
                                gr.io_signature(1,1,gr.sizeof_int))
        nop1 = gr.nop(gr.sizeof_int)
-       hblock.connect(nop1, 0, hblock, 0);
+       hblock.connect(nop1, hblock);
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(nop1, 0, hblock, 0))
+           lambda: hblock.connect(nop1, hblock))
 
     def test_009_connect_one_src_two_dst(self):
-       hblock = gr.hier_block2("test_block", 
-                               gr.io_signature(1,1,gr.sizeof_int), 
-                               gr.io_signature(1,1,gr.sizeof_int))
+       hblock = gr.top_block("test_block")
        src = gr.null_source(gr.sizeof_int)
        dst1 = gr.null_sink(gr.sizeof_int)
        dst2 = gr.null_sink(gr.sizeof_int)
-       hblock.connect(src, 0, dst1, 0)
-       hblock.connect(src, 0, dst2, 0)
+       hblock.connect(src, dst1)
+       hblock.connect(src, dst2)
 
     def test_010_connect_type_mismatch(self):
-       hblock = gr.hier_block2("test_block", 
-                               gr.io_signature(1,1,gr.sizeof_int), 
-                               gr.io_signature(1,1,gr.sizeof_int))
+       hblock = gr.top_block("test_block")
        nop1 = gr.nop(gr.sizeof_char)
+       nop2 = gr.nop(gr.sizeof_int)
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(nop1, 0, hblock, 0))
+           lambda: hblock.connect(nop1, nop2))
 
     def test_011_check_topology(self):
-       hblock = gr.hier_block2("test_block", 
-                               gr.io_signature(0,0,gr.sizeof_int), 
-                               gr.io_signature(0,0,gr.sizeof_int))
-       hblock.check_topology(0, 0);
+       hblock = gr.top_block("test_block")
+       hblock.check_topology(0, 0)
 
     def test_012_disconnect(self):
-       hblock = gr.hier_block2("test_block", 
-                               gr.io_signature(1,1,gr.sizeof_int), 
-                               gr.io_signature(1,1,gr.sizeof_int))
+       hblock = gr.top_block("test_block") 
        nop1 = gr.nop(gr.sizeof_int)
        nop2 = gr.nop(gr.sizeof_int)
-       hblock.connect(nop1, 0, nop2, 0)
-        hblock.disconnect(nop1, 0, nop2, 0)
+       hblock.connect(nop1, nop2)
+        hblock.disconnect(nop1, nop2)
 
     def test_013_disconnect_not_connected(self):
        hblock = gr.hier_block2("test_block", 
@@ -123,20 +116,18 @@
        nop1 = gr.nop(gr.sizeof_int)
        nop2 = gr.nop(gr.sizeof_int)
        nop3 = gr.nop(gr.sizeof_int)
-       hblock.connect(nop1, 0, nop2, 0)
+       hblock.connect(nop1, nop2)
        self.assertRaises(ValueError, 
-           lambda: hblock.disconnect(nop1, 0, nop3, 0))
+           lambda: hblock.disconnect(nop1, nop3))
 
     def test_014_run(self):
         expected = (1.0, 2.0, 3.0, 4.0)
-        hblock = gr.hier_block2("test_block",
-                                gr.io_signature(0,0,0),
-                                gr.io_signature(0,0,0))
+        hblock = gr.top_block("test_block")
         src = gr.vector_source_f(expected, False)
         sink1 = gr.vector_sink_f()
         sink2 = gr.vector_sink_f()
-        hblock.connect(src, 0, sink1, 0)
-        hblock.connect(src, 0, sink2, 0)
+        hblock.connect(src, sink1)
+        hblock.connect(src, sink2)
         runtime = gr.runtime(hblock)
         runtime.run()
         actual1 = sink1.data()
@@ -146,17 +137,15 @@
 
     def test_015_connect_disconnect(self):
         expected = (1.0, 2.0, 3.0, 4.0)
-        hblock = gr.hier_block2("test_block",
-                                gr.io_signature(0,0,0),
-                                gr.io_signature(0,0,0))
+        hblock = gr.top_block("test_block")
         src = gr.vector_source_f(expected, False)
         sink1 = gr.vector_sink_f()
         sink2 = gr.vector_sink_f()
-        hblock.connect(src, 0, sink1, 0)
-        hblock.connect(src, 0, sink2, 0)
-        hblock.disconnect(src, 0, sink2, 0)
+        hblock.connect(src, sink1)
+        hblock.connect(src, sink2)
+        hblock.disconnect(src, sink2)
         runtime = gr.runtime(hblock)
         runtime.run()
-
+    
 if __name__ == "__main__":
     gr_unittest.main()

Modified: 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-examples/python/hier/audio/dial_tone2.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-examples/python/hier/audio/dial_tone2.py
        2007-04-13 20:35:14 UTC (rev 4998)
+++ 
gnuradio/branches/developers/jcorgan/hier2/gnuradio-examples/python/hier/audio/dial_tone2.py
        2007-04-13 22:15:17 UTC (rev 4999)
@@ -39,8 +39,8 @@
                src1 = gr.sig_source_f(sample_rate, gr.GR_SIN_WAVE, 440, 
amplitude)
                dst  = audio.sink(sample_rate, audio_output)
 
-               self.connect(src0, 0, dst, 0)   
-               self.connect(src1, 0, dst, 1)
+               self.connect(src0, (dst, 0))    
+               self.connect(src1, (dst, 1))
        
 if __name__ == '__main__':
        parser = OptionParser(option_class=eng_option)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]