Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits.

Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered.
pull/1469/head
Dean Camera 15 years ago
parent 3472af91a5
commit 7f3f39b575

@ -260,12 +260,7 @@ void ProcessMouseReport(uint8_t* MouseReport)
if (!(FoundData))
continue;
int16_t DeltaMovement;
if (ReportItem->Attributes.BitSize > 8)
DeltaMovement = (int16_t)ReportItem->Value;
else
DeltaMovement = (int8_t)ReportItem->Value;
int16_t DeltaMovement = (int16_t)(ReportItem->Value << (16 - ReportItem->Attributes.BitSize));
/* Determine if the report is for the X or Y delta movement */
if (ReportItem->Attributes.Usage.Usage == USAGE_X)

@ -113,6 +113,8 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID
break;
case (TYPE_GLOBAL | TAG_GLOBAL_REPORTID):
CurrStateTable->ReportID = ReportItemData;
BitOffsetIn = 0;
BitOffsetOut = 0;
break;
case (TYPE_LOCAL | TAG_LOCAL_USAGE):
if (UsageStackSize == HID_USAGE_STACK_DEPTH)

@ -73,6 +73,8 @@
* - Fixed Mouse/Keyboard demos not performing the correct arithmetic on the Idle period at the right times (thanks to Brian Dickman)
* - Fixed GenericHID failing HID class tests due to incorrect Logical Minimum and Logical Maximum values (thanks to Søren Greiner)
* - Fixed incorrect PIPE_EPNUM_MASK mask causing pipe failures on devices with endpoint addresses of 8 and above (thanks to John Andrews)
* - Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits
* - Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered
*
*
* \section Sec_ChangeLog090605 Version 090605

Loading…
Cancel
Save