From 99ff27e4038b90eeed38c2a15ca8352152364d68 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 17 Sep 2011 13:07:21 +0000 Subject: [PATCH] Fixed HID Parser's largest report size bit count not including the size of the last parsed report item. Fixed HID host driver's largest HID report size count corrupt when the number of report bits exceeds 255. --- LUFA/Drivers/USB/Class/Common/HIDParser.c | 3 +-- LUFA/Drivers/USB/Class/Host/HID.c | 2 +- LUFA/ManPages/ChangeLog.txt | 2 ++ LUFA/ManPages/LUFAPoweredProjects.txt | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/LUFA/Drivers/USB/Class/Common/HIDParser.c b/LUFA/Drivers/USB/Class/Common/HIDParser.c index b601d8638a..903b039df5 100644 --- a/LUFA/Drivers/USB/Class/Common/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Common/HIDParser.c @@ -255,8 +255,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType] += CurrStateTable->Attributes.BitSize; - if (ParserData->LargestReportSizeBits < NewReportItem.BitOffset) - ParserData->LargestReportSizeBits = NewReportItem.BitOffset; + ParserData->LargestReportSizeBits = MAX(ParserData->LargestReportSizeBits, CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType]); if (ParserData->TotalReportItems == HID_MAX_REPORTITEMS) return HID_PARSE_InsufficientReportItems; diff --git a/LUFA/Drivers/USB/Class/Host/HID.c b/LUFA/Drivers/USB/Class/Host/HID.c index fdcd6ee2b9..bfbe6cf695 100644 --- a/LUFA/Drivers/USB/Class/Host/HID.c +++ b/LUFA/Drivers/USB/Class/Host/HID.c @@ -421,7 +421,7 @@ uint8_t HID_Host_SetReportProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceI return HID_ERROR_LOGICAL | ErrorCode; } - uint8_t LargestReportSizeBits = HIDInterfaceInfo->Config.HIDParserData->LargestReportSizeBits; + uint16_t LargestReportSizeBits = HIDInterfaceInfo->Config.HIDParserData->LargestReportSizeBits; HIDInterfaceInfo->State.LargestReportSize = (LargestReportSizeBits >> 3) + ((LargestReportSizeBits & 0x07) != 0); return 0; diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 49e0955fe4..526084b6ef 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -83,6 +83,8 @@ * - Fixed optimization error in the HID Parser item value USB_SetHIDReportItemInfo() and USB_GetHIDReportItemInfo() routines if the report item was * \c NULL (which should be allowable according to the API) * - Fixed HID Parser CALLBACK_HIDParser_FilterHIDReportItem() callback function not being passed a cacheable report item pointer + * - Fixed HID Parser's largest report size bit count not including the size of the last parsed report item + * - Fixed HID host driver's largest HID report size count corrupt when the number of report bits exceeds 255 * - Library Applications: * - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2 * - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed diff --git a/LUFA/ManPages/LUFAPoweredProjects.txt b/LUFA/ManPages/LUFAPoweredProjects.txt index 8e1c9eba6e..a46e2c68fb 100644 --- a/LUFA/ManPages/LUFAPoweredProjects.txt +++ b/LUFA/ManPages/LUFAPoweredProjects.txt @@ -39,6 +39,7 @@ * - Arcade Controller: http://fletchtronics.net/arcade-controller-made-petunia * - AVR USB Modem, a 3G Wireless Modem host: http://code.google.com/p/avrusbmodem/ * - Bicycle POV: http://www.code.google.com/p/bicycleledpov/ + * - Bluetooth Explorerbot: http://code.google.com/p/bluetooth-explorerbot/ * - Bus Ninja, an AVR clone of the popular BusPirate project: http://blog.hodgepig.org/busninja/ * - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig * - CD Driver Emulator Dongle for ISO Files: http://cdemu.blogspot.com/