<?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>i.MX RT Crossover MCUs中的主题 Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900847#M2946</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/CarlosCasillas"&gt;CarlosCasillas&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You asked for my hardware and software configuration, but then deleted your request.&amp;nbsp; Is there other information I can provide to help you answer my questions?&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, 29 Apr 2019 22:00:15 GMT</pubDate>
    <dc:creator>nbgatgi</dc:creator>
    <dc:date>2019-04-29T22:00:15Z</dc:date>
    <item>
      <title>Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900839#M2938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;*** After all the discussion below and others I created a summary post&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/502624" style="color: #2989c5; text-decoration: none;"&gt;here&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;***&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&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&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/484970" style="color: #2989c5; text-decoration: none;"&gt;https://community.nxp.com/thread/484970&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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 href="https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/" style="color: #2989c5; text-decoration: none;"&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 href="https://www.usb.org/document-library/hid-descriptor-tool" style="color: #2989c5; text-decoration: none;"&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="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&gt;&lt;SPAN style="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="font-family: 'courier new', courier, monospace;"&gt;uint8_t g_UsbDeviceHidGenericReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="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="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="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="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="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="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="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="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="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="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="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="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="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="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;&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="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="font-family: 'courier new', courier, monospace;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="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&gt;&lt;SPAN style="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="font-family: 'courier new', courier, monospace;"&gt;uint8_t g_UsbDeviceHidGenericReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="font-family: 'courier new', courier, monospace;"&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="; color: #ff0000; text-decoration: underline; font-family: arial, helvetica, sans-serif;"&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;As I see it, there are two arrays acting as data buffers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;&lt;SPAN style="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="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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;The value of "&lt;SPAN&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;SPAN&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="text-decoration: underline;"&gt;&lt;EM style="color: #ff0000; text-decoration: underline; "&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;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline; color: #ff0000;"&gt;&lt;EM style="font-family: arial, helvetica, sans-serif; "&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:43:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900839#M2938</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-17T21:43:05Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900840#M2939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hardware:&amp;nbsp; MIMXRT1064-EVK&lt;/P&gt;&lt;P&gt;IDE:&amp;nbsp; MCUXpresso (latest version)&lt;/P&gt;&lt;P&gt;SDK:&amp;nbsp; 2.4.1&lt;/P&gt;&lt;P&gt;Example Code Project:&amp;nbsp; dev_hid_generic_freertos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Apr 2019 14:58:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900840#M2939</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-23T14:58:56Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900841#M2940</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&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 Guzzardo&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;，&lt;/P&gt;&lt;P&gt;Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.&lt;BR /&gt;In my opinion, I'd highly recommend you not to try other units of report size except for uint8, otherwise, you should consider spending some time to check whether really report size is consistent with the size that defined in the USB stack architecture, even, do some modification about the USB stack, however, the stack usually seems a bit complicated for most developers.&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2019 10:55:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900841#M2940</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2019-04-26T10:55:54Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900842#M2941</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeremy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With the research I have done regarding the HID implementation of USB, changing report sizes in various combinations within a USB packet using the report descriptors in whatever fashion is needed is a fundamental benefit of using the HID class.&amp;nbsp; Suggesting that I don't make changes is not realistic for new product development.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am not interested in modifying the stack itself.&amp;nbsp; What I need is an understanding of how the data received/transmitted in a single USB data packet is associated with the report descriptor and then how that data is connected to a data structure (struct) for use in the application.&amp;nbsp; Are you able to help explain this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2019 15:49:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900842#M2941</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-26T15:49:21Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900843#M2942</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Carlos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have provided the information you requested.&amp;nbsp; Will you be able to help explain&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;how the data received/transmitted in a single USB data packet is associated with the report descriptor and then how that data is connected to a data structure (struct) for use in the application?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Nick&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2019 15:50:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900843#M2942</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-26T15:50:32Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900844#M2943</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 Guzzardo&lt;/A&gt;&lt;/SPAN&gt;，&lt;/P&gt;&lt;P&gt;Thanks for your reply.&lt;BR /&gt;Okay, I know you mean, so how's going on with your testing?&lt;BR /&gt;Maybe I can do a favor.&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a re&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 09:31:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900844#M2943</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2019-04-29T09:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900845#M2944</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&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&gt;&lt;/P&gt;&lt;P&gt;There is a structure type called "&lt;SPAN style="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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;typedef struct _usb_hid_generic_struct&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="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="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="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="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="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="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="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="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="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="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="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="font-family: 'courier new', courier, monospace;"&gt;} usb_hid_generic_struct_t;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This structure includes an array of two uint8_t pointers ( .&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;*buffer[]&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="font-family: 'courier new', courier, monospace;"&gt;g_UsbDeviceHidGeneric&lt;/SPAN&gt;" and is declared in "hid_generic.c".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The actual buffer arrays are declared in "hid_generic.c" and their addresses loaded into&amp;nbsp;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;g_UsbDeviceHidGeneric.buffer[]&lt;/SPAN&gt;&amp;nbsp;during application initialization.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="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="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&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;static void USB_DeviceApplicationInit(void)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="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="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&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since I have configured my USB application to run at high-speed instead of full-speed, the definition for "&lt;SPAN style="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 style="font-family: arial, helvetica, sans-serif;"&gt;Also&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&gt;&lt;/P&gt;&lt;P&gt;The USB send and receive procedures are&amp;nbsp;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;USB_DeviceHidSend&lt;/SPAN&gt; and &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;USB_DeviceHidRecv&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;usb_status_t USB_DeviceHidRecv(class_handle_t handle, uint8_t ep, &lt;SPAN style="color: #ff0000;"&gt;uint8_t *buffer, uint32_t length&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; "&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif; "&gt;&lt;EM&gt;&lt;STRONG&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 style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&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&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG style=": ; font-family: arial, helvetica, sans-serif; "&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;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: arial, helvetica, sans-serif; "&gt;Nick&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 21:42:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900845#M2944</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-29T21:42:47Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900846#M2945</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/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your reply, but you didn't seem to attempt to answer my questions.&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&gt;&lt;/P&gt;&lt;P&gt;Nick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 21:46:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900846#M2945</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-29T21:46:20Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900847#M2946</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/CarlosCasillas"&gt;CarlosCasillas&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You asked for my hardware and software configuration, but then deleted your request.&amp;nbsp; Is there other information I can provide to help you answer my questions?&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, 29 Apr 2019 22:00:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900847#M2946</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-29T22:00:15Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900848#M2947</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I asked such information to redirect your question with the proper team. So, in case if still having questions, please continue with &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;‌.&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Apr 2019 22:03:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900848#M2947</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2019-04-29T22:03:47Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900849#M2948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&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 Guzzardo&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Thank you for your clarification。&lt;BR /&gt;Q1) Ture.&lt;BR /&gt;Q2) No, as there's no difference for the USB protocol to send the HID report whose format may be different.&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Apr 2019 14:10:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900849#M2948</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2019-04-30T14:10:39Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900850#M2949</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/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T‌hank you again for your reply.&amp;nbsp; To effectively and efficiently create the communications backbone for my product using USB HID, I must understand the interaction between the report descriptors and the USB stack from both the device and host side.&amp;nbsp; This takes me back to the originally posted questions (highlighted in red).&amp;nbsp; Would you or one of your colleges be able to more completely respond to those questions?&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:11:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900850#M2949</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-04-30T15:11:11Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900851#M2950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp; &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 Guzzardo&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;Thanks for your reply.&lt;BR /&gt;Q1) 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;BR /&gt;-- Ture.&lt;BR /&gt;q2) 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;BR /&gt;-- No, regarding the USB packet, it consists of the byte, not the word, so it always conforms to the specification even if receiving or transferring different format of Report.&lt;BR /&gt;The USB_DeviceEhciTransfer() is the last function to be called by the upper layer in the USB stack to receiving or sending the endpoint's data, please review its code to learn the mechanism of USB data transferring.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 May 2019 07:52:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900851#M2950</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2019-05-05T07:52:07Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900852#M2951</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/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm almost there!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my specific case of generic HID for the sole purpose of transmitting data with guaranteed latency and guaranteed delivery of data using interrupt transfers, with no implied hardware function like a mouse or a keyboard, it does not appear that the report descriptor is particularly useful.&amp;nbsp; As I am understanding, the hardware level is transmitting data as bytes to/from sequential memory segments.&amp;nbsp; After a transfer is complete, the data can be cast into whatever structure the application needs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If this is the case then there is one outstanding point from my original post:&amp;nbsp;&amp;nbsp;&lt;EM style="color: #ff0000; background-color: #ffffff; border: 0px;"&gt;&lt;STRONG style="border: 0px; font-weight: bold;"&gt;"... If that is the case, then what is the point of creating the report descriptor at all?"&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Parameters in a report descriptor like logical max and min don't appear to be necessary for proper function.&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;So, are there parts of a report descriptor that ARE required for establishing proper communications with a host or is the only required info from the interface descriptor?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&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 19:57:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900852#M2951</guid>
      <dc:creator>nbgatgi</dc:creator>
      <dc:date>2019-05-06T19:57:25Z</dc:date>
    </item>
    <item>
      <title>Re: Modifying USB Generic HID Example Code for Custom Report Descriptors</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900853#M2952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp; &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-content-finding="Community" data-objectid="307979" data-objecttype="3" href="https://community.nxp.com/people/nbgatgi"&gt;Nick Guzzardo&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;Q1) If that is the case, then what is the point of creating the report descriptor at all?&lt;BR /&gt;-- HID descriptor structure should conform to HID class definition, meanwhile, the HID report is free to set by the developer to design a customized HID class device.&lt;BR /&gt;Q2) So, are there parts of a report descriptor that ARE required for establishing proper communications with a host or is the only required info from the interface descriptor?&lt;BR /&gt;-- It's required for establishing proper communications with a host.&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 May 2019 08:45:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Modifying-USB-Generic-HID-Example-Code-for-Custom-Report/m-p/900853#M2952</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2019-05-07T08:45:11Z</dc:date>
    </item>
  </channel>
</rss>

