[Top][All Lists]
[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4999 - in gnuradio/branches/developers/jcorgan/hier2: gnuradio-core/src/python/gnuradio/gr gnuradio-examples/python/hier/audio,
jcorgan <=