diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2017-05-01 07:46:44 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2017-05-01 07:46:44 -0700 |
commit | a7e699fe51a89df96deb2b852fcf67f13b94d24f (patch) | |
tree | 16f922763e3621158147a618fa8bff889252554f /gr-digital/python/digital | |
parent | 3c0d5d0eddb88ca7e1c0eee055765de9c6bc0259 (diff) | |
parent | ce64630d5ecb1186c6e857e84a51b831f5b86adf (diff) |
Merge branch 'master' into next
Diffstat (limited to 'gr-digital/python/digital')
-rwxr-xr-x | gr-digital/python/digital/qa_scrambler.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gr-digital/python/digital/qa_scrambler.py b/gr-digital/python/digital/qa_scrambler.py index 4d35879b1f..522b23245f 100755 --- a/gr-digital/python/digital/qa_scrambler.py +++ b/gr-digital/python/digital/qa_scrambler.py @@ -23,6 +23,17 @@ from gnuradio import gr, gr_unittest, digital, blocks import pmt +# See gr-digital/lib/additive_scrambler_bb_impl.cc for reference. +def additive_scramble_lfsr(mask, seed, reglen, bpb, data): + l = digital.lfsr(mask, seed, reglen) + out = [] + for d in data: + scramble_word = 0 + for i in xrange(0,bpb): + scramble_word ^= l.next_bit() << i + out.append(d ^ scramble_word) + return tuple(out) + class test_scrambler(gr_unittest.TestCase): def setUp(self): @@ -98,5 +109,25 @@ class test_scrambler(gr_unittest.TestCase): self.tb.run() self.assertEqual(src_data, dst.data()) + def test_additive_scrambler_tags_oneway(self): + src_data = range(0, 10) + reset_tag_key = 'reset_lfsr' + reset_tag1 = gr.tag_t() + reset_tag1.key = pmt.string_to_symbol(reset_tag_key) + reset_tag1.offset = 0 + reset_tag2 = gr.tag_t() + reset_tag2.key = pmt.string_to_symbol(reset_tag_key) + reset_tag2.offset = 10 + reset_tag3 = gr.tag_t() + reset_tag3.key = pmt.string_to_symbol(reset_tag_key) + reset_tag3.offset = 20 + src = blocks.vector_source_b(src_data * 3, False, 1, (reset_tag1, reset_tag2, reset_tag3)) + scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 0, 8, reset_tag_key) + dst = blocks.vector_sink_b() + self.tb.connect(src, scrambler, dst) + self.tb.run() + expected_data = additive_scramble_lfsr(0x8a, 0x7f, 7, 8, src_data) + self.assertEqual(expected_data * 3, dst.data()) + if __name__ == '__main__': gr_unittest.run(test_scrambler, "test_scrambler.xml") |