Pass Facedancer stress test, adding NAK support #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hydradancer was built initially by always priming IN buffers (sending data before the host requests it). This worked for the different test devices (mouse, mass-storage, loopback, speedtest) because the device was already aware of what to send or the protocol on top of the USB protocol set the requirements in advance. The advantage is that it makes things faster, as data is already there when the host needs it. The issue is the device is not aware of the host requesting data. While this worked for a while, it meant the USB protocol was not fully implemented, which made the new USB stress test fail.
Speedtests with this new version are 50% slower : the order of magnitude is still the same compared with Facedancer21/GreatFET but waiting for the host to request data makes things slower. The previous speeds can still be reached for devices that support priming.
A lot of things had to be changed in this PR