<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Kinetis MicrocontrollersのトピックRe: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900873#M53029</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/danielchen@fsl"&gt;danielchen@fsl&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your reply, but your reply with the report descriptor suggestion was not relevant to my original request.&amp;nbsp;&amp;nbsp;I have replied to my original post with a few more details.&amp;nbsp; Hopefully that will help you understand what I'm looking for.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 29 Apr 2019 21:56:46 GMT</pubDate>
    <dc:creator>nbgatgi</dc:creator>
    <dc:date>2019-04-29T21:56:46Z</dc:date>
    <item>
      <title>Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900868#M53024</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="border: 0px;"&gt;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;*** After all the discussion below and others I created a summary post &lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/502623"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;here&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt; &lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;***&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;I have&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;successfully&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;used the generic HID example code to echo data sent from the PC to my target processor back to the PC with modifications to high-speed and packet size of 1024-bytes.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;A _jive_internal="true" data-containerid="11497" data-containertype="14" data-content-finding="Community" data-objectid="484970" data-objecttype="1" href="https://community.nxp.com/thread/484970" style="color: #3d9ce7; background-color: transparent; border: 0px; font-weight: inherit; padding: 1px 0px 1px calc(12px + 0.35ex);"&gt;https://community.nxp.com/thread/484970&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;I went on to add my own tasks under FreeRTOS as well as adjust the task priorities for the purpose of justifying the use of USB HID for our instrument's communication interface.&amp;nbsp; With that complete, I'm on to the task of customizing the reports via the report descriptor and data structures.&amp;nbsp; After much debate the only significant change we want is to change the report size from 8-bits to 32-bits.&amp;nbsp; To remain within the 1kB packet size, this also requires the report count to change from 1024 to 256 as well as the logical min and max.&amp;nbsp; With the help of the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Feleccelerator.com%2Ftutorial-about-usb-hid-report-descriptors%2F" rel="nofollow" style="color: #3d9ce7; border: 0px; font-weight: inherit; text-decoration: none; padding: 0px calc(12px + 0.35ex) 0px 0px;" target="_blank"&gt;report descriptor tutorial&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.usb.org%2Fdocument-library%2Fhid-descriptor-tool" rel="nofollow" style="color: #3d9ce7; border: 0px; font-weight: inherit; text-decoration: none; padding: 0px calc(12px + 0.35ex) 0px 0px;" target="_blank"&gt;tool&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for generating the hex for the report descriptor, I made the following changes:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; text-decoration: underline;"&gt;&lt;EM&gt;Report Descriptor 8-bit reports and 1024 report count&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;uint8_t g_UsbDeviceHidGenericReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x05U, 0x81U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage Page (Vendor defined)*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x82U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xA1U, 0x01U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Collection (Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x83U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x15U, 0x80U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Logical Minimum (-128) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x25U, 0x7FU, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Logical Maximum (127) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x75U, 0x08U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Size (8U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x96U, 0x00U, 0x04U, &amp;nbsp;&amp;nbsp;/* Report Count (1024U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x81U, 0x02U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Input(Data, Variable, Absolute) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x84U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x15U, 0x80U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Logical Minimum (-128) */&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x25U, 0x7FU, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Logical Maximum (127) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x75U, 0x08U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Size (8U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x96U, 0x00U, 0x04U, &amp;nbsp;&amp;nbsp;/* Report Count (1024U) */&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;0x91U, 0x02U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Output(Data, Variable, Absolute) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xC0U, /* End collection */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; text-decoration: underline;"&gt;&lt;EM&gt;Report Descriptor 32-bit reports and 256 report count&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;uint8_t g_UsbDeviceHidGenericReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x05U, 0x81U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage Page (Vendor defined)*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x82U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xA1U, 0x01U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Collection (Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x83U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;0x17U, 0x00U, 0x00U, 0x00U, 0x80U, /* Logical Minimum (-2,147,483,648) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x27U, 0xFFU, 0xFFU, 0xFFU, 0x7FU, /* Logical Maximum (2,147,483,647) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;0x75U, 0x20U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Size (32U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;0x96U, 0x00U, 0x01U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Count (256U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;0x81U, 0x02U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Input(Data, Variable, Absolute) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x09U, 0x84U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Usage (Vendor defined) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x17U, 0x00U, 0x00U, 0x00U, 0x80U, /* Logical Minimum (-2,147,483,648) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x27U, 0xFFU, 0xFFU, 0xFFU, 0x7FU, /* Logical Maximum (2,147,483,647) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x75U, 0x20U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Size (32U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x96U, 0x00U, 0x01U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Report Count (256U) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x91U, 0x02U, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Output(Data, Variable, Absolute) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xC0U, /* End collection */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; color: #ff0000; text-decoration: underline;"&gt;&lt;EM&gt;&lt;STRONG&gt;Where I am struggling now is finding documentation on how to associate the structure defined in the report descriptor with a structure for using the data in my application.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;As I see it, there are two arrays acting as data buffers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-size: 11px;"&gt;USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint32_t s_GenericBuffer0[USB_HID_GENERIC_IN_BUFFER_LENGTH &amp;gt;&amp;gt; 2];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-size: 11px;"&gt;USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint32_t s_GenericBuffer1[USB_HID_GENERIC_IN_BUFFER_LENGTH &amp;gt;&amp;gt; 2];&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;The value of "&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;USB_HID_GENERIC_IN_BUFFER_LENGTH" is equal to the size of the USB packet in bytes which is 1024, but the buffers have been declared as uint32 so the array size was divided by 4.&amp;nbsp; When the buffer is used in the application, the buffers are cast as unint8 which matches the report size in the report descriptor.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;In my specific case, I believe it is effectively done as long as I don't re-cast the buffers since it's already in 32-bit elements.&amp;nbsp; &lt;SPAN style="; color: #ff0000; text-decoration: underline;"&gt;&lt;EM&gt;&lt;STRONG&gt;But what if I had several reports defined in various sizes?&amp;nbsp; Would I simply transfer the entire packet to an array of n-bytes and then cast it to whatever structure I deem appropriate?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; color: #ff0000; text-decoration: underline;"&gt;&lt;EM&gt;&lt;STRONG&gt;If that is the case, then what is the point of creating the report descriptor at all?&amp;nbsp; Wouldn't it be just as effective and far more simple to just add the number of bits I need, make that the report size with a report count of 1?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2019 21:45:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900868#M53024</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-17T21:45:48Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900869#M53025</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nick:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your question, in order to understand you question better, could you please let me know your hardware and software ? I am assuming you are using Kinetis, right?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 27 Apr 2019 00:10:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900869#M53025</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2019-04-27T00:10:51Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900870#M53026</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have actually used this same example code for Kinetis K22 as well as LPC54608 and i.MX RT1064.&amp;nbsp; Since it is so similar between projects and my question is not really processor specific, I've posted the question in three groups.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my current configuration:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Hardware:&amp;nbsp; MIMXRT1064-EVK&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;IDE:&amp;nbsp; MCUXpresso (latest version)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;SDK:&amp;nbsp; 2.4.1&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Example Code Project:&amp;nbsp; dev_hid_generic_freertos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 Apr 2019 04:07:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900870#M53026</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-28T04:07:19Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900871#M53027</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="307979" data-username="nbgatgi" href="https://community.nxp.com/people/nbgatgi"&gt;Nick&lt;/A&gt;&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For your case, I would suggest you assign an ''report ID".&amp;nbsp; Each report ID involves one data format. In your application, you need to parse the data according to the report ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below descriptor is copied from other community, you can customize for your own. You need to manually set the report ID before you send the data. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static uint8_t arcade_report_desc[] = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Usage Page (Generic Desktop Ctrls)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x05,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Usage (Game Pad)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Collection (Application)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; Collection (Physical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 0x85, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report ID (1)&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x09,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Button)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x19, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Minimum (0x01)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x29, 0x07,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Maximum (0x07)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15, 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Minimum (0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Maximum (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x07,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (7)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 0x03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Generic Desktop Ctrls)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x30,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (X)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x31,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Y)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15, 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Minimum (129)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25, 0x7F,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Maximum (127)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (2)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (8)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 0x85, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report ID (2)&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15, 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Minimum (0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logical Maximum (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x01)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x02)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x03)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x04,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x04)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x05,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x05)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x06,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x06)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x0A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (Ordinal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x07,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (0x07)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA1, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Collection (Logical)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage Page (LEDs)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x4B,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Usage (Generic Indicator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Count (1)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x09,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report Size (9)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91, 0x03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; End Collection&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // End Collection&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// 181 bytes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry I don't have a document, I will update you if I have, your tutorial about USB HID Report Descriptor is a good one:)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 07:33:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900871#M53027</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2019-04-29T07:33:13Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900872#M53028</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;In the hopes of seeding the conversation to a more useful end, here is a little more of what I have found for this specific example code:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;There is a structure type called "&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;usb_hid_generic_struct_t&lt;/SPAN&gt;" which I believe is intended to include all the information regarding the specific HID device.&amp;nbsp; It is located in the file "hid_generic.h".&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;typedef struct _usb_hid_generic_struct&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;usb_device_handle deviceHandle;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;class_handle_t hidHandle;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaskHandle_t applicationTaskHandle;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaskHandle_t deviceTaskHandle;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t *buffer[2];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t bufferIndex;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t idleRate;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t speed;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t attach;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t currentConfiguration;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t currentInterfaceAlternateSetting[USB_HID_GENERIC_INTERFACE_COUNT];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;} usb_hid_generic_struct_t;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;This structure includes an array of two uint8_t pointers ( &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;.&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;*buffer[]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;) which points to arrays used together as a double-buffer for data received or data to be sent over the USB port.&amp;nbsp; The only object declared with this structure type is "&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;g_UsbDeviceHidGeneric&lt;/SPAN&gt;" and is declared in "hid_generic.c".&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;The actual buffer arrays are declared in "hid_generic.c" and their addresses loaded into&amp;nbsp;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;g_UsbDeviceHidGeneric.buffer[]&lt;/SPAN&gt;&amp;nbsp;during application initialization.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint32_t s_GenericBuffer0[USB_HID_GENERIC_IN_BUFFER_LENGTH &amp;gt;&amp;gt; 2];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint32_t s_GenericBuffer1[USB_HID_GENERIC_IN_BUFFER_LENGTH &amp;gt;&amp;gt; 2];&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;static void USB_DeviceApplicationInit(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_UsbDeviceHidGeneric.buffer[0] = (uint8_t *)&amp;amp;s_GenericBuffer0[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;g_UsbDeviceHidGeneric.buffer[1] = (uint8_t *)&amp;amp;s_GenericBuffer1[0];&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Since I have configured my USB application to run at high-speed instead of full-speed, the definition for "&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;USB_HID_GENERIC_IN_BUFFER_LENGTH&lt;/SPAN&gt;" was initially set to 1024 representing the number of bytes transmitted in each USB packet (full-speed is limited to 64-bytes per packet for interrupt transfers).&amp;nbsp; Note that the arrays are typed as uint32_t and so the size of each is divided by 4 ( "&amp;gt;&amp;gt; 2" = 2x binary right-shift = /4 ).&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Also&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;note that when their addresses are initialized into the structures buffer pointers that they are cast as uint8_t.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;The USB send and receive procedures are&amp;nbsp;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;USB_DeviceHidSend&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;USB_DeviceHidRecv&lt;/SPAN&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;&amp;nbsp;&lt;/SPAN&gt;and require the same four parameters.&amp;nbsp; The last two parameters are the data pointer and the number of bytes to be sent.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit; font-family: 'courier new', courier, monospace;"&gt;usb_status_t USB_DeviceHidRecv(class_handle_t handle, uint8_t ep,&amp;nbsp;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;uint8_t *buffer, uint32_t length&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Note again that the data pointer is for a uint8_t.&amp;nbsp; Since there is not a separate send and receive procedure that uses any other bit configuration, I assume the low level for USB transfers is exclusively 8-bit.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;Now to the nitty-gritty of what I was trying to understand at the beginning of this thread.&lt;/STRONG&gt;&lt;/EM&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;Regardless of the structure I use for my data (array of bytes, array of ints, mix of data types ...), in order to send or receive that data it appears to require all data being cast as uint8_t &amp;lt;-- TRUE or FALSE?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;If the above question is TRUE, other than identifying the USB packet size, how are report descriptors relevant?&amp;nbsp; Stated another way, are there middle-ware checks in the stack that validate what is being transmitted against the report descriptor?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="color: #000000; border: 0px; font-weight: inherit;"&gt;Nick&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 21:52:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900872#M53028</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-29T21:52:48Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900873#M53029</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/danielchen@fsl"&gt;danielchen@fsl&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your reply, but your reply with the report descriptor suggestion was not relevant to my original request.&amp;nbsp;&amp;nbsp;I have replied to my original post with a few more details.&amp;nbsp; Hopefully that will help you understand what I'm looking for.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 21:56:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900873#M53029</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-29T21:56:46Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900874#M53030</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="307979" data-username="nbgatgi" href="https://community.nxp.com/people/nbgatgi"&gt;Nick &lt;/A&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="border: 0px; color: #ff0000; font-weight: inherit; "&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;Regardless of the structure I use for my data (array of bytes, array of ints, mix of data types ...), in order to send or receive that data it appears to require all data being cast as uint8_t &amp;lt;-- TRUE or FALSE?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Yes, you can think so.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000; border: 0px; font-weight: inherit;"&gt;&lt;EM style="border: 0px; font-weight: inherit;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;If the above question is TRUE, other than identifying the USB packet size, how are report descriptors relevant?&amp;nbsp; Stated another way, are there middle-ware checks in the stack that validate what is being transmitted against the report descriptor?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;No, there aren't any middle-ware checks that validate what is being transmitted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For your case, I would suggest you use &lt;SPAN style="border: 0px; font-weight: inherit; text-decoration: underline;"&gt;&lt;EM&gt;Report Descriptor 8-bit reports and 1024 report count&lt;/EM&gt;&lt;/SPAN&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; with this, you can transmit&amp;nbsp; packets&amp;nbsp; up to 1024 bytes.&amp;nbsp; It is the application's job to parse the packet.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Apr 2019 14:04:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900874#M53030</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2019-04-30T14:04:27Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900875#M53031</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/danielchen@fsl"&gt;danielchen@fsl&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your feedback, but expecting me to stick with the 8-bit report size and 1024 report count is not realistic.&amp;nbsp; The report descriptors have been designed for complex modification and as I have stated, I have the report descriptors as I want them and am confident that they are correct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you have any colleges who may be more familiar with how the USB stack works with report descriptors?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Apr 2019 15:06:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900875#M53031</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-30T15:06:33Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900876#M53032</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you are interested in a more complete conversation on this topic here is the link:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/500874" style="color: #2989c5; text-decoration: none;"&gt;https://community.nxp.com/thread/500874&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 May 2019 20:01:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900876#M53032</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-05-06T20:01:42Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900877#M53033</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Would not RAW HID be an option? &lt;A href="https://www.pjrc.com/teensy/rawhid.html" rel="nofollow noopener noreferrer" target="test_blank"&gt;https://www.pjrc.com/teensy/rawhid.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Usage report example below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/*
    /--------------------------\
    |     Device Descriptor    |
    /--------------------------\
                  |
    /--------------------------\
    | Configuration Descriptor |
    /--------------------------\
                  |
    /--------------------------\
    |    Interface Descriptor  |
    /--------------------------\
                  |   |
                  |   ----------------------------
                  |                              |
    /--------------------------\     /--------------------------\
    |    Endpoint Descriptor   |     |       HID Descriptor     |
    /--------------------------\     /--------------------------\
                                                 |
                                  -------------------------------
                                  |                             |
                   /--------------------------\     /--------------------------\
                   |      Report Descriptor   |     |   Physical Descriptor    |
                   /--------------------------\     /--------------------------\
*/&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;static&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;char&lt;/SPAN&gt; ucRawReport&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x06&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;LITTLE_SHORT_WORD_BYTES&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;RAWHID_USAGE_PAGE&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x0a&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;LITTLE_SHORT_WORD_BYTES&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;RAWHID_USAGE&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0xa1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// collection 0x01&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x75&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x08&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// report size = 8 bits&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x15&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// logical minimum = 0&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x26&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;255&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                     &lt;SPAN class="comment token"&gt;// logical maximum = 255&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x95&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; HID_RAW_TX_SIZE&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                               &lt;SPAN class="comment token"&gt;// report count&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x09&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x01&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// usage&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x81&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x02&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// input (array)&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x95&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; HID_RAW_RX_SIZE&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                               &lt;SPAN class="comment token"&gt;// report count&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x09&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x02&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// usage&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0x91&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0x02&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                                                          &lt;SPAN class="comment token"&gt;// output (array)&lt;/SPAN&gt;
 &lt;SPAN class="number token"&gt;0xc0&lt;/SPAN&gt;                                                                 &lt;SPAN class="comment token"&gt;// end collection&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since the max. USB bulk packet size is defined to be max 64 for full speed and max 512 for high speed I suppose the HID packet size is a higher layer setting that is not HW related; 1024 would only be allowed when using HS isochronous transfer (1023 max. for FS).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 May 2019 06:00:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900877#M53033</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2019-05-07T06:00:54Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900878#M53034</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I believe you are incorrect regarding max packet size for USB high-speed (HS)&amp;nbsp;interrupt transfers.&amp;nbsp; 512-bytes is the high-speed limit for bulk transfers, but it is 1024-bytes for interrupt transfers which are used by HID.&amp;nbsp; We chose an interrupt transfer class over bulk because it provides guaranteed latency (maximum time between transfer attempts) and bulk transfers do not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For reference, here is table 2-1 in &lt;A href="http://janaxelson.com/usbc.htm"&gt;Jan Axelson's "USB Complete: The Developer's Guide" 5th Edition&lt;/A&gt;:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/79903i922D1479782627A3/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_3.png" alt="pastedImage_3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I have been able to validate that the packet transmission time for a HS port is the same up to and including 1024B.&amp;nbsp; Note that per the USB specification, up to 3x 1024B burst-packets can be sent within the 125µs polling period.&amp;nbsp; That is of particular note since that means that the maximum data-rate for interrupt transfers using a USB 2.0 high-speed port is the same as a USB 3.1 port!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What you are proposing is effectively what we are doing.&amp;nbsp; Starting with the generic HID example for the MCUXpresso SDK, I have modified the report descriptor for 32-bit reports.&amp;nbsp; We do not foresee a need for 64-bit information so 32-bit reports double the number of reports within a 1024-byte packet.&amp;nbsp; Furthermore, as I've discovered in researching this, for a generic or vendor defined "usage page", the information in the report descriptor is only relevant if you make it so on the host application side.&amp;nbsp; Otherwise, the received data can be cast to whatever data structure you want assuming you are controlling the applications for the device and host, which is what we are doing.&amp;nbsp; Of course if you are trying to communicate the structure to an unknown host application, the report descriptor becomes very relevant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 May 2019 17:39:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900878#M53034</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-05-07T17:39:56Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900879#M53035</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I referenced bulk (512/64) and isochronous (1024/1023) and not interrupt, which is as stated in your table (1024/64).&lt;/P&gt;&lt;P&gt;I had forgotten that interrupt endpoints are used rather than bulk...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 May 2019 21:47:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900879#M53035</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2019-05-08T21:47:09Z</dc:date>
    </item>
  </channel>
</rss>

