forked from mfulz_github/qmk_firmware
Fixed optimization error in the HID Parser item value USB_SetHIDReportItemInfo() and USB_GetHIDReportItemInfo() routines if the report item was 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.
This commit is contained in:
parent
94e0a0058a
commit
4b229cb5ef
|
@ -258,16 +258,14 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
|
|||
if (ParserData->LargestReportSizeBits < NewReportItem.BitOffset)
|
||||
ParserData->LargestReportSizeBits = NewReportItem.BitOffset;
|
||||
|
||||
if (ParserData->TotalReportItems == HID_MAX_REPORTITEMS)
|
||||
return HID_PARSE_InsufficientReportItems;
|
||||
|
||||
memcpy(&ParserData->ReportItems[ParserData->TotalReportItems],
|
||||
&NewReportItem, sizeof(HID_ReportItem_t));
|
||||
|
||||
if (!(ReportItemData & HID_IOF_CONSTANT) && CALLBACK_HIDParser_FilterHIDReportItem(&NewReportItem))
|
||||
{
|
||||
if (ParserData->TotalReportItems == HID_MAX_REPORTITEMS)
|
||||
return HID_PARSE_InsufficientReportItems;
|
||||
|
||||
memcpy(&ParserData->ReportItems[ParserData->TotalReportItems],
|
||||
&NewReportItem, sizeof(HID_ReportItem_t));
|
||||
|
||||
ParserData->TotalReportItems++;
|
||||
}
|
||||
ParserData->TotalReportItems++;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -291,7 +289,7 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
|
|||
HID_ReportItem_t* const ReportItem)
|
||||
{
|
||||
if (ReportItem == NULL)
|
||||
return false;
|
||||
return false;
|
||||
|
||||
uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
|
||||
uint16_t CurrentBit = ReportItem->BitOffset;
|
||||
|
@ -324,7 +322,7 @@ void USB_SetHIDReportItemInfo(uint8_t* ReportData,
|
|||
HID_ReportItem_t* const ReportItem)
|
||||
{
|
||||
if (ReportItem == NULL)
|
||||
return;
|
||||
return;
|
||||
|
||||
uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
|
||||
uint16_t CurrentBit = ReportItem->BitOffset;
|
||||
|
|
|
@ -295,7 +295,7 @@
|
|||
* \returns Boolean \c true if the item to retrieve was located in the given report, \c false otherwise.
|
||||
*/
|
||||
bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
|
||||
HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
|
||||
HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1);
|
||||
|
||||
/** Retrieves the given report item's value out of the \c Value member of the report item's
|
||||
* \ref HID_ReportItem_t structure and places it into the correct position in the HID report
|
||||
|
@ -311,7 +311,7 @@
|
|||
* \param[in] ReportItem Pointer to the report item of interest in a \ref HID_ReportInfo_t ReportItem array.
|
||||
*/
|
||||
void USB_SetHIDReportItemInfo(uint8_t* ReportData,
|
||||
HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
|
||||
HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1);
|
||||
|
||||
/** Retrieves the size of a given HID report in bytes from its Report ID.
|
||||
*
|
||||
|
@ -331,6 +331,10 @@
|
|||
* \ref HID_ReportInfo_t structure. This can be used to filter only those items the application will be using, so that
|
||||
* no RAM is wasted storing the attributes for report items which will never be referenced by the application.
|
||||
*
|
||||
* Report item pointers passed to this callback function may be cached by the user application for later use
|
||||
* when processing report items. This provides faster report processing in the user application than would
|
||||
* a search of the entire parsed report item table for each received or sent report.
|
||||
*
|
||||
* \param[in] CurrentItem Pointer to the current report item for user checking.
|
||||
*
|
||||
* \return Boolean \c true if the item should be stored into the \ref HID_ReportInfo_t structure, \c false if
|
||||
|
|
|
@ -80,6 +80,9 @@
|
|||
* - Fixed USB_USBTask not being called internally in stream transfers between packets when Partial Stream Transfers are used
|
||||
* - Fixed swapped TWI_ADDRESS_READ and TWI_ADDRESS_WRITE values
|
||||
* - Fixed TWI_ReadPacket() not releasing the TWI bus on read completion
|
||||
* - 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
|
||||
* - 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
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
* -# Add additional standard request helper functions to host mode
|
||||
* -# Add Dataflash_SendCommand()
|
||||
* -# Make HOST_DEVICE_SETTLE_DELAY_MS a global variable that can be changed
|
||||
* -# Add MANDATORY_EVENT_FUNCTIONS compile time option
|
||||
* -# Add watchdog support to the library and apps/bootloaders
|
||||
* - Documentation/Support
|
||||
* -# Add detailed overviews of how each demo works
|
||||
* -# Add board overviews
|
||||
|
|
Loading…
Reference in New Issue