diff options
author | Jeff Long <willcode4@gmail.com> | 2021-02-13 13:00:34 -0500 |
---|---|---|
committer | Martin Braun <martin@gnuradio.org> | 2021-02-15 01:09:41 -0800 |
commit | 0351066c8b2398eb5894d89fd8ed37cdab43368d (patch) | |
tree | 4835a79c60454d3383910dd4aaa219bc0655d36a /gr-digital/python/digital | |
parent | ffd67d14dcd0f08f8ff6fa7a5f8386d20ebeb92f (diff) |
gr-digital: qa_header_payload_demux fix
The HeaderToMessageBlock adapter assumed it would receive a complete
header in work(). Also, forecast() is not currently working for Python
blocks, so a local buffer was required in the adapter.
Two asserts needed list().
Signed-off-by: Jeff Long <willcode4@gmail.com>
Diffstat (limited to 'gr-digital/python/digital')
-rw-r--r-- | gr-digital/python/digital/qa_header_payload_demux.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gr-digital/python/digital/qa_header_payload_demux.py b/gr-digital/python/digital/qa_header_payload_demux.py index 76be0905f0..d02e9e984d 100644 --- a/gr-digital/python/digital/qa_header_payload_demux.py +++ b/gr-digital/python/digital/qa_header_payload_demux.py @@ -31,7 +31,8 @@ def make_tag(key, value, offset): class HeaderToMessageBlock(gr.sync_block): """ Helps with testing the HPD. Receives a header, stores it, posts - a predetermined message. + a predetermined message. forecast() is not currently working in + Python, so use a local buffer to accumulate header data. """ def __init__(self, itemsize, header_len, messages): @@ -45,13 +46,16 @@ class HeaderToMessageBlock(gr.sync_block): self.message_port_register_out(pmt.intern('header_data')) self.messages = messages self.msg_count = 0 + self.buf = [] def work(self, input_items, output_items): """Where the magic happens.""" - for _ in range(len(input_items[0]) // self.header_len): + self.buf.extend(input_items[0]) + for _ in range(len(self.buf) // self.header_len): msg = self.messages[self.msg_count] or False self.message_port_pub(pmt.intern('header_data'), pmt.to_pmt(msg)) self.msg_count += 1 + del self.buf[:self.header_len] output_items[0][:] = input_items[0][:] return len(input_items[0]) @@ -426,8 +430,8 @@ class qa_header_payload_demux (gr_unittest.TestCase): time.sleep(.2) self.tb.stop() self.tb.wait() - self.assertEqual(header_sink.data(), header) - self.assertEqual(payload_sink.data(), payload * n_symbols) + self.assertEqual(header_sink.data(), list(header)) + self.assertEqual(payload_sink.data(), list(payload * n_symbols)) ptags_header = [] for tag in header_sink.tags(): ptag = gr.tag_to_python(tag) |