discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] Header/Payload Demux Bug Fix


From: Richard Bell
Subject: [Discuss-gnuradio] Header/Payload Demux Bug Fix
Date: Mon, 1 Jun 2015 09:21:57 -0700

Martin et. al.,

The fix that makes this block work for us in any scenario, is to add a break statement at the end of every case statement (don't allow the fall through's to happen).

This leads me to believe the source of the issues comes from the way offsets are calculated between states within one general_work call. Letting general_work return after every state resolves any of these issues. I think this points to check_items_available as the problem child, but I couldn't confirm that.

The testbench I use to confirm this has the built-in HPD block and my custom HPD block, which has break statements at the end of each state. The built-in HPD block will start producing errors seconds after I start the flowgraph. With the built-in disabled and my custom block in the same flowgraph, it will run indefinitely (tested for 20 hours).

The settings of both blocks were:
Header Length: 8
Items per Symbol: 8
Length tag key: "packet_length"
Output Format: Items
IO Type: Complex
Trigger Tag Key: blank

The input to HPD is unpacked and the header is 64 bits long when packed. I did the bulk of testing using a custom tag_trigger block that outputs a 1 when it sees a certain tag and 0 otherwise to feed the detect port of HPD. I just tried it using the Trigger Tag Key of the HPD block itself and it also seems to be fine. So either way seems to work.

I looked at the bug submission instructions, I think forking from github is the easiest way of doing it, but I need a little clarification. In this case, am I correct to fork the repo, add the break statements to the HPD source, and request a pull along with this explanation? I won't be adding QA tests or anything else.

v/r,
Rich

reply via email to

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