Track HID report offsets per report ID#293
Merged
hrvach merged 1 commit intohrvach:mainfrom Oct 31, 2025
Merged
Conversation
Per USB HID spec section 6.2.2.7, each report ID defines an independent report structure with its own bit offset tracking. Previously, offsets were reset when encountering a new report ID or at collection boundaries, causing incorrect parsing of descriptors with multiple reports. Changes: - Add report_offset_map_t to map report IDs to their offsets - Track offsets separately for each report ID in parser state - Remove incorrect offset resets on report ID change and collection end - Add helper functions for offset lookup and creation Local items still reset after Main items and Global items persist, matching spec requirements.
Owner
|
Thank you so much for the work and patches, I'll test and merge as soon as I'm back from a work trip! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Based on my reading of the USB HID spec, each report ID defines an independent report structure with its own bit offset tracking. Previously, offsets were reset when encountering a new report ID or at collection boundaries, causing incorrect parsing of descriptors when the report ID swapped back and forth within the same descriptor.
Changes: