fix(radio): properly center analog USB joystick axis #4883
+18
−20
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.
Analog USB joystick axis are encoded as unsigned integers ranging [0 - 2047]. As a consequence input value 0 is reported as output 1024. This leads to asymmetric output: 1024 values smaller than 0 and 1023 values larger than 0.
mixer.cpp generates values [-1024 to +1024] (11 bit + 1) instead of [-1024 to +1023] (11 bit). Luckily the HID report descriptor already reserves 16 bits so the shift from 11 bit to 12 bit output is easy.
Fix #4881 by changing the joystick range from [0 - 2047] to [0 - 2048].