commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r9847 - in gnuradio/branches/developers/eb/frank/gnura


From: eb
Subject: [Commit-gnuradio] r9847 - in gnuradio/branches/developers/eb/frank/gnuradio-core/src: lib/gengen python/gnuradio/gr
Date: Sat, 25 Oct 2008 16:14:46 -0600 (MDT)

Author: eb
Date: 2008-10-25 16:14:44 -0600 (Sat, 25 Oct 2008)
New Revision: 9847

Added:
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
Modified:
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
   
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/Makefile.am
Log:
Added optional vlen parameter to vector_source_* and vector_sink_*


Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
    2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
    2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -30,10 +30,11 @@
 #include <gr_io_signature.h>
 
 
address@hidden@::@NAME@ ()
address@hidden@::@NAME@ (int vlen)
   : gr_sync_block ("@BASE_NAME@",
-              gr_make_io_signature (1, 1, sizeof (@TYPE@)),
-              gr_make_io_signature (0, 0, 0))
+                  gr_make_io_signature (1, 1, sizeof (@TYPE@) * vlen),
+                  gr_make_io_signature (0, 0, 0)),
+    d_vlen(vlen)
 {
 }
 
@@ -43,7 +44,7 @@
                    gr_vector_void_star &output_items)
 {
   @TYPE@ *iptr = (@TYPE@ *) input_items[0];
-  for (int i = 0; i < noutput_items; i++)
+  for (int i = 0; i < noutput_items * d_vlen; i++)
     d_data.push_back (iptr[i]);
 
   return noutput_items;
@@ -51,9 +52,9 @@
 
 
 @address@hidden
address@hidden@ ()
address@hidden@ (int vlen)
 {
-  return @address@hidden (new @NAME@ ());
+  return @address@hidden (new @NAME@ (vlen));
 }
 
 std::vector<@TYPE@>

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
     2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
     2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -31,7 +31,7 @@
 typedef boost::shared_ptr<@NAME@> @address@hidden;
 
 @address@hidden
address@hidden@ ();
address@hidden@ (int vlen = 1);
 
 
 /*!
@@ -40,9 +40,10 @@
  */
 
 class @NAME@ : public gr_sync_block {
-  friend @address@hidden address@hidden@ ();
+  friend @address@hidden address@hidden@ (int vlen);
   std::vector<@TYPE@>  d_data;
-  @NAME@ ();
+  int                  d_vlen;
+  @NAME@ (int vlen);
 
  public:
   virtual int work (int noutput_items,

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
     2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
     2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -25,11 +25,11 @@
 
 GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@);
 
address@hidden@ address@hidden@ ();
address@hidden@ address@hidden@ (int vlen = 1);
 
 class @NAME@ : public gr_sync_block {
  private:
-  @NAME@ ();
+  @NAME@ (int vlen);
 
  public:
   void clear() {d_data.clear();}

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
  2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
  2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -28,16 +28,20 @@
 #include <@address@hidden>
 #include <algorithm>
 #include <gr_io_signature.h>
+#include <stdexcept>
 
 
address@hidden@::@NAME@ (const std::vector<@TYPE@> &data, bool repeat)
address@hidden@::@NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen)
   : gr_sync_block ("@BASE_NAME@",
               gr_make_io_signature (0, 0, 0),
-              gr_make_io_signature (1, 1, sizeof (@TYPE@))),
+              gr_make_io_signature (1, 1, sizeof (@TYPE@) * vlen)),
     d_data (data),
     d_repeat (repeat),
-    d_offset (0)
+    d_offset (0),
+    d_vlen (vlen)
 {
+  if ((data.size() % vlen) != 0)
+    throw std::invalid_argument("data length must be a multiple of vlen");
 }
 
 int
@@ -54,7 +58,7 @@
     if (size == 0)
       return -1;
     
-    for (int i = 0; i < noutput_items; i++){
+    for (int i = 0; i < noutput_items*d_vlen; i++){
       optr[i] = d_data[offset++];
       if (offset >= size)
        offset = 0;
@@ -68,18 +72,18 @@
       return -1;                       // Done!
 
     unsigned n = std::min ((unsigned) d_data.size () - d_offset,
-                          (unsigned) noutput_items);
+                          (unsigned) noutput_items*d_vlen);
     for (unsigned i = 0; i < n; i++)
       optr[i] = d_data[d_offset + i];
 
     d_offset += n;
-    return n;
+    return n/d_vlen;
   }
 }
 
 @address@hidden
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat)
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat, int vlen)
 {
-  return @address@hidden (new @NAME@ (data, repeat));
+  return @address@hidden (new @NAME@ (data, repeat, vlen));
 }
 

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
   2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
   2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -37,13 +37,14 @@
 
 class @NAME@ : public gr_sync_block {
   friend @address@hidden 
-  address@hidden@ (const std::vector<@TYPE@> &data, bool repeat = false);
+  address@hidden@ (const std::vector<@TYPE@> &data, bool repeat, int vlen);
 
   std::vector<@TYPE@>  d_data;
   bool                 d_repeat;
   unsigned int         d_offset;
+  int                  d_vlen;
 
-  @NAME@ (const std::vector<@TYPE@> &data, bool repeat);
+  @NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen);
 
  public:
   void rewind() {d_offset=0;}
@@ -53,6 +54,6 @@
 };
 
 @address@hidden
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat);
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen 
= 1);
 
 #endif

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
   2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
   2008-10-25 22:14:44 UTC (rev 9847)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2008 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -25,11 +25,12 @@
 GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@);
 
 @address@hidden
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat = false);
address@hidden@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen 
= 1)
+  throw(std::invalid_argument);
 
 class @NAME@ : public gr_sync_block {
  public:
   void rewind() {d_offset=0;}
  private:
-  @NAME@ (const std::vector<@TYPE@> &data);
+  @NAME@ (const std::vector<@TYPE@> &data, int vlen);
 };

Modified: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/Makefile.am
      2008-10-25 22:11:31 UTC (rev 9846)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/Makefile.am
      2008-10-25 22:14:44 UTC (rev 9847)
@@ -94,4 +94,5 @@
        qa_skiphead.py                  \
        qa_unpack_k_bits.py             \
        qa_repeat.py                    \
-       qa_scrambler.py
+       qa_scrambler.py                 \
+       qa_vector_sink_source.py        

Added: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
===================================================================
--- 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
                         (rev 0)
+++ 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
 2008-10-25 22:14:44 UTC (rev 9847)
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+#
+# Copyright 2008 Free Software Foundation, Inc.
+# 
+# This file is part of GNU Radio
+# 
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+# 
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+# 
+
+from gnuradio import gr, gr_unittest
+import math
+
+class test_sink_source(gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001(self):
+        src_data = [float(x) for x in range(16)]
+        expected_result = tuple(src_data)
+
+        src = gr.vector_source_f(src_data)
+        dst = gr.vector_sink_f()
+
+        self.tb.connect(src, dst)
+        self.tb.run()
+        result_data = dst.data()
+        self.assertEqual(expected_result, result_data)
+
+    def test_002(self):
+        src_data = [float(x) for x in range(16)]
+        expected_result = tuple(src_data)
+
+        src = gr.vector_source_f(src_data, False, 2)
+        dst = gr.vector_sink_f(2)
+
+        self.tb.connect(src, dst)
+        self.tb.run()
+        result_data = dst.data()
+        self.assertEqual(expected_result, result_data)
+
+    def test_003(self):
+        src_data = [float(x) for x in range(16)]
+        expected_result = tuple(src_data)
+        self.assertRaises(ValueError, lambda : gr.vector_source_f(src_data, 
False, 3))
+
+if __name__ == '__main__':
+    gr_unittest.main ()
+


Property changes on: 
gnuradio/branches/developers/eb/frank/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:eol-style
   + native





reply via email to

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