commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r5161 - in gnuradio/branches/developers/jcorgan/hb/gnu


From: jcorgan
Subject: [Commit-gnuradio] r5161 - in gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src: lib/runtime python/gnuradio/gr
Date: Fri, 27 Apr 2007 15:02:53 -0600 (MDT)

Author: jcorgan
Date: 2007-04-27 15:02:53 -0600 (Fri, 27 Apr 2007)
New Revision: 5161

Modified:
   
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
   
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
Log:
Work in progress.

Modified: 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
      2007-04-27 21:02:24 UTC (rev 5160)
+++ 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc
      2007-04-27 21:02:53 UTC (rev 5161)
@@ -49,8 +49,17 @@
                                gr_basic_block_sptr dst, int dst_port)
 {
   if (src.get() == dst.get())
-    throw std::runtime_error("src and destination blocks cannot be the same");
+    throw std::invalid_argument("src and destination blocks cannot be the 
same");
 
+  int max_port;
+  max_port = src->output_signature()->max_streams();
+  if ((max_port != -1 && (src_port >= max_port)) || src_port < 0)
+    throw std::invalid_argument("source port out of range");
+
+  max_port = dst->input_signature()->max_streams();
+  if ((max_port != -1 && (dst_port >= max_port)) || dst_port < 0)
+    throw std::invalid_argument("destination port out of range");
+
   if (src.get() == d_owner)
     return assign_output(src_port, dst_port, dst);
 
@@ -77,6 +86,9 @@
   if (my_port < 0 || my_port >= (signed)d_inputs.size())
     throw std::invalid_argument("input port number out of range");
 
+  if (d_inputs[my_port].block())
+    throw std::invalid_argument("input port in use");
+
   d_inputs[my_port] = gr_endpoint(block, port);
 }
 
@@ -86,6 +98,9 @@
   if (my_port < 0 || my_port >= (signed)d_outputs.size())
     throw std::invalid_argument("output port number out of range");
 
+  if (d_outputs[my_port].block())
+    throw std::invalid_argument("output port in use");
+
   d_outputs[my_port] = gr_endpoint(block, port);
 }
 

Modified: 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
      2007-04-27 21:02:24 UTC (rev 5160)
+++ 
gnuradio/branches/developers/jcorgan/hb/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
      2007-04-27 21:02:53 UTC (rev 5161)
@@ -35,6 +35,16 @@
        nop1 = gr.nop(gr.sizeof_int)
        hblock.connect(hblock, nop1)
 
+    def test_002a_connect_input_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)
+       nop2 = gr.nop(gr.sizeof_int)
+       hblock.connect(hblock, nop1)
+       self.assertRaises(ValueError,
+           lambda: hblock.connect(hblock, nop2))
+
     def test_003_connect_output(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
@@ -42,6 +52,16 @@
        nop1 = gr.nop(gr.sizeof_int)
        hblock.connect(nop1, hblock)
 
+    def test_003a_connect_output_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)
+       nop2 = gr.nop(gr.sizeof_int)
+       hblock.connect(nop1, hblock)
+       self.assertRaises(ValueError,
+           lambda: hblock.connect(nop2, hblock))
+
     def test_004_connect_invalid_src_port_neg(self):
        hblock = gr.hier_block2("test_block", 
                                gr.io_signature(1,1,gr.sizeof_int), 
@@ -79,9 +99,10 @@
                                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, hblock);
+       nop2 = gr.nop(gr.sizeof_int)
+       hblock.connect(nop1, nop2);
        self.assertRaises(ValueError, 
-           lambda: hblock.connect(nop1, hblock))
+           lambda: hblock.connect(nop1, nop2))
 
     def test_009_connect_one_src_two_dst(self):
        hblock = gr.top_block("test_block")





reply via email to

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