summaryrefslogtreecommitdiff
path: root/gr-blocks/python
diff options
context:
space:
mode:
authorAchilleas Anastasopoulos <anastas@umich.edu>2015-04-22 11:00:50 -0400
committerJohnathan Corgan <johnathan@corganlabs.com>2015-04-26 15:35:45 -0700
commitabb3e0643ae245f08b7e7bcdaf3b8e8f0c312908 (patch)
treed629fa7c3a05708289ffb6a01dc87a2d9937aa6f /gr-blocks/python
parentc0a88bebb5ac163dd774f113b3eef71ed30221ea (diff)
blocks: better implementation of peak_detector2. Address #783.
In the original form, work function in peak_detector2 block sometimes returns -1. For more details, see the mailing list thread: - http://lists.gnu.org/archive/html/discuss-gnuradio/2015-04/msg00197.html
Diffstat (limited to 'gr-blocks/python')
-rw-r--r--gr-blocks/python/blocks/qa_peak_detector2.py87
1 files changed, 82 insertions, 5 deletions
diff --git a/gr-blocks/python/blocks/qa_peak_detector2.py b/gr-blocks/python/blocks/qa_peak_detector2.py
index 475897eac2..d6fd4fe95f 100644
--- a/gr-blocks/python/blocks/qa_peak_detector2.py
+++ b/gr-blocks/python/blocks/qa_peak_detector2.py
@@ -30,18 +30,20 @@ class test_peak_detector2(gr_unittest.TestCase):
def tearDown(self):
self.tb = None
- def test_regen1(self):
+ def test_peak1(self):
+ #print "\n\nTEST 1"
tb = self.tb
- data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
+ n=10
+ data = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)+n*(0,)
expected_result = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)+n*(0,)
src = blocks.vector_source_f(data, False)
- regen = blocks.peak_detector2_fb()
+ regen = blocks.peak_detector2_fb(7.0, 25, 0.001)
dst = blocks.vector_sink_b()
tb.connect(src, regen)
@@ -52,5 +54,80 @@ class test_peak_detector2(gr_unittest.TestCase):
self.assertEqual(expected_result, dst_data)
+ def test_peak2(self):
+ #print "\n\nTEST 2"
+ tb = self.tb
+
+ n=10
+ data = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,)+n*(0,)
+
+ expected_result = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)+n*(0,)
+
+
+ src = blocks.vector_source_f(data, False)
+ regen = blocks.peak_detector2_fb(7.0, 1000, 0.001) # called with a LONG window
+ dst = blocks.vector_sink_b()
+
+ tb.connect(src, regen)
+ tb.connect(regen, dst)
+ tb.run()
+
+ dst_data = dst.data()
+
+ # here we know that the block will terminate prematurely, so we compare only part of the expected_result
+ self.assertEqual(expected_result[0:len(dst_data)], dst_data)
+
+
+ def test_peak3(self):
+ #print "\n\nTEST 3"
+ tb = self.tb
+
+ l = 8100
+ m = 100
+ n = 10
+ data = l*(0,)+ (10,)+ m*(0,)+(100,)+ n*(0,)
+ expected_result = l*(0,)+ (0,)+ m*(0,)+(1,)+ n*(0,)
+
+
+ src = blocks.vector_source_f(data, False)
+ regen = blocks.peak_detector2_fb(7.0, 105, 0.001)
+ dst = blocks.vector_sink_b()
+
+ tb.connect(src, regen)
+ tb.connect(regen, dst)
+ tb.run()
+
+ dst_data = dst.data()
+
+ self.assertEqual(expected_result, dst_data)
+
+
+ def test_peak4(self):
+ #print "\n\nTEST 4"
+ tb = self.tb
+
+ l = 8100
+ m = 100
+ n = 10
+ data = l*(0,)+ (10,)+ m*(0,)+(100,)+ n*(0,)
+ expected_result = l*(0,)+ (0,)+ m*(0,)+(1,)+ n*(0,)
+
+
+ src = blocks.vector_source_f(data, False)
+ regen = blocks.peak_detector2_fb(7.0, 150, 0.001)
+ dst = blocks.vector_sink_b()
+
+ tb.connect(src, regen)
+ tb.connect(regen, dst)
+ tb.run()
+
+ dst_data = dst.data()
+
+ # here we know that the block will terminate prematurely, so we compare only part of the expected_result
+ self.assertEqual(expected_result[0:len(dst_data)], dst_data)
+
+
if __name__ == '__main__':
gr_unittest.run(test_peak_detector2, "test_peak_detector2.xml")