mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-06-13 04:14:19 +00:00
Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist within the supplied report of a multiple report HID device.
This commit is contained in:
parent
eb060db71b
commit
f4de17207e
@ -276,7 +276,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
|
|||||||
{
|
{
|
||||||
UsageMinMax.Minimum = 0;
|
UsageMinMax.Minimum = 0;
|
||||||
UsageMinMax.Maximum = 0;
|
UsageMinMax.Maximum = 0;
|
||||||
UsageListSize = 0;
|
UsageListSize = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,9 +292,6 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
|
|||||||
uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
|
uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
|
||||||
uint16_t CurrentBit = ReportItem->BitOffset;
|
uint16_t CurrentBit = ReportItem->BitOffset;
|
||||||
uint32_t BitMask = (1 << 0);
|
uint32_t BitMask = (1 << 0);
|
||||||
|
|
||||||
ReportItem->PreviousValue = ReportItem->Value;
|
|
||||||
ReportItem->Value = 0;
|
|
||||||
|
|
||||||
if (ReportItem->ReportID)
|
if (ReportItem->ReportID)
|
||||||
{
|
{
|
||||||
@ -304,6 +301,9 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
|
|||||||
ReportData++;
|
ReportData++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReportItem->PreviousValue = ReportItem->Value;
|
||||||
|
ReportItem->Value = 0;
|
||||||
|
|
||||||
while (DataBitsRem--)
|
while (DataBitsRem--)
|
||||||
{
|
{
|
||||||
if (ReportData[CurrentBit / 8] & (1 << (CurrentBit % 8)))
|
if (ReportData[CurrentBit / 8] & (1 << (CurrentBit % 8)))
|
||||||
|
@ -285,8 +285,10 @@
|
|||||||
/** Extracts the given report item's value out of the given HID report and places it into the Value
|
/** Extracts the given report item's value out of the given HID report and places it into the Value
|
||||||
* member of the report item's \ref HID_ReportItem_t structure.
|
* member of the report item's \ref HID_ReportItem_t structure.
|
||||||
*
|
*
|
||||||
* When called, this copies the report item's Value element to it's PreviousValue element for easy
|
* When called on a report with an item that exists in that report, this copies the report item's Value
|
||||||
* checking to see if an item's value has changed before processing a report.
|
* to it's PreviousValue element for easy checking to see if an item's value has changed before processing
|
||||||
|
* a report. If the given item does not exist in the report, the function does not modify the report item's
|
||||||
|
* data.
|
||||||
*
|
*
|
||||||
* \param[in] ReportData Buffer containing an IN or FEATURE report from an attached device.
|
* \param[in] ReportData Buffer containing an IN or FEATURE report from an attached device.
|
||||||
* \param[in,out] ReportItem Pointer to the report item of interest in a \ref HID_ReportInfo_t ReportItem array.
|
* \param[in,out] ReportItem Pointer to the report item of interest in a \ref HID_ReportInfo_t ReportItem array.
|
||||||
|
@ -13,6 +13,10 @@
|
|||||||
* with basic code
|
* with basic code
|
||||||
* - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints
|
* - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints
|
||||||
*
|
*
|
||||||
|
* <b>Fixed:</b>
|
||||||
|
* - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist
|
||||||
|
* within the supplied report of a multiple report HID device
|
||||||
|
*
|
||||||
* \section Sec_ChangeLog100807 Version 100807
|
* \section Sec_ChangeLog100807 Version 100807
|
||||||
* <b>New:</b>
|
* <b>New:</b>
|
||||||
* - Added new ADC_DisableChannel() function (thanks to Mich Davis)
|
* - Added new ADC_DisableChannel() function (thanks to Mich Davis)
|
||||||
|
Loading…
Reference in New Issue
Block a user