The timing of the protocol is not really configurable, valid data in
this protocol must always adhere to the same timing parameters, making them
configurable should not be needed.
Also: Only check for the "interesting" edges and simplify the code a bit.