summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/python
diff options
context:
space:
mode:
authorjcorgan2007-04-03 20:11:05 +0000
committerjcorgan2007-04-03 20:11:05 +0000
commitbae47cc41eda30e96de5e6d640f467760ae05c23 (patch)
treea531a462dd2bcc2b0d6815d4fbd22c0dfb8d76a5 /gnuradio-core/src/python
parent0825379873157f65ebbcdaeed47da5bd760c5276 (diff)
downloadgnuradio-bae47cc41eda30e96de5e6d640f467760ae05c23.tar.gz
gnuradio-bae47cc41eda30e96de5e6d640f467760ae05c23.tar.bz2
gnuradio-bae47cc41eda30e96de5e6d640f467760ae05c23.zip
Merged r4767:4859 from developer branch jcorgan/channel, passes distcheck.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4860 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-core/src/python')
-rw-r--r--gnuradio-core/src/python/gnuradio/gr/Makefile.am2
-rwxr-xr-xgnuradio-core/src/python/gnuradio/gr/qa_glfsr_source.py (renamed from gnuradio-core/src/python/gnuradio/gr/qa_glfsr_source_b.py)32
-rwxr-xr-xgnuradio-core/src/python/gnuradio/gr/qa_pn_correlator_cc.py50
3 files changed, 80 insertions, 4 deletions
diff --git a/gnuradio-core/src/python/gnuradio/gr/Makefile.am b/gnuradio-core/src/python/gnuradio/gr/Makefile.am
index 3969a28fd..175b36b60 100644
--- a/gnuradio-core/src/python/gnuradio/gr/Makefile.am
+++ b/gnuradio-core/src/python/gnuradio/gr/Makefile.am
@@ -63,6 +63,7 @@ noinst_PYTHON = \
qa_fractional_interpolator.py \
qa_frequency_modulator.py \
qa_fsk_stuff.py \
+ qa_glfsr_source.py \
qa_goertzel.py \
qa_head.py \
qa_hier_block2.py \
@@ -81,6 +82,7 @@ noinst_PYTHON = \
qa_pll_carriertracking.py \
qa_pll_freqdet.py \
qa_pll_refout.py \
+ qa_pn_correlator_cc.py \
qa_rational_resampler.py \
qa_sig_source.py \
qa_single_pole_iir.py \
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_glfsr_source_b.py b/gnuradio-core/src/python/gnuradio/gr/qa_glfsr_source.py
index ceda6c832..e0243d24c 100755
--- a/gnuradio-core/src/python/gnuradio/gr/qa_glfsr_source_b.py
+++ b/gnuradio-core/src/python/gnuradio/gr/qa_glfsr_source.py
@@ -22,7 +22,7 @@
from gnuradio import gr, gr_unittest
-class test_glfsr_source_b(gr_unittest.TestCase):
+class test_glfsr_source(gr_unittest.TestCase):
def setUp (self):
self.fg = gr.flow_graph ()
@@ -30,18 +30,18 @@ class test_glfsr_source_b(gr_unittest.TestCase):
def tearDown (self):
self.fg = None
- def test_000_make(self):
+ def test_000_make_b(self):
src = gr.glfsr_source_b(16)
self.assertEquals(src.mask(), 0x8016)
self.assertEquals(src.period(), 2**16-1)
- def test_001_degree(self):
+ def test_001_degree_b(self):
self.assertRaises(RuntimeError,
lambda: gr.glfsr_source_b(0))
self.assertRaises(RuntimeError,
lambda: gr.glfsr_source_b(33))
- def test_002_correlation(self):
+ def test_002_correlation_b(self):
for degree in range(1,11): # Higher degrees take too long to correlate
src = gr.glfsr_source_b(degree, False)
b2f = gr.chunks_to_symbols_bf((-1.0,1.0), 1)
@@ -55,6 +55,30 @@ class test_glfsr_source_b(gr_unittest.TestCase):
for i in range(len(R)-1):
self.assertEqual(R[i+1], -1.0) # Auto-correlation minimum everywhere else
+ def test_003_make_f(self):
+ src = gr.glfsr_source_f(16)
+ self.assertEquals(src.mask(), 0x8016)
+ self.assertEquals(src.period(), 2**16-1)
+
+ def test_004_degree_f(self):
+ self.assertRaises(RuntimeError,
+ lambda: gr.glfsr_source_f(0))
+ self.assertRaises(RuntimeError,
+ lambda: gr.glfsr_source_f(33))
+
+ def test_005_correlation_f(self):
+ for degree in range(1,11): # Higher degrees take too long to correlate
+ src = gr.glfsr_source_f(degree, False)
+ dst = gr.vector_sink_f()
+ self.fg.connect(src, dst)
+ self.fg.run()
+
+ actual_result = dst.data()
+ R = auto_correlate(actual_result)
+ self.assertEqual(R[0], float(len(R))) # Auto-correlation peak at origin
+ for i in range(len(R)-1):
+ self.assertEqual(R[i+1], -1.0) # Auto-correlation minimum everywhere else
+
def auto_correlate(data):
l = len(data)
R = [0,]*l
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_pn_correlator_cc.py b/gnuradio-core/src/python/gnuradio/gr/qa_pn_correlator_cc.py
new file mode 100755
index 000000000..bc03d714a
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/gr/qa_pn_correlator_cc.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 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 2, 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
+
+class test_pn_correlator_cc(gr_unittest.TestCase):
+
+ def setUp(self):
+ self.fg = gr.flow_graph ()
+
+ def tearDown(self):
+ self.fg = None
+
+ def test_000_make(self):
+ c = gr.pn_correlator_cc(10)
+
+ def test_001_correlate(self):
+ degree = 10
+ length = 2**degree-1
+ src = gr.glfsr_source_f(degree)
+ head = gr.head(gr.sizeof_float, length*length)
+ f2c = gr.float_to_complex()
+ corr = gr.pn_correlator_cc(degree)
+ dst = gr.vector_sink_c()
+ self.fg.connect(src, head, f2c, corr, dst)
+ self.fg.run()
+ data = dst.data()
+ self.assertEqual(data[-1], (1.0+0j))
+
+if __name__ == '__main__':
+ gr_unittest.main ()