<?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>topic Re: USB Host Audio Stream Receive in i.MX RT Crossover MCUs</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936227#M3927</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can I get an update on this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's been almost three weeks since my initial&amp;nbsp;post pertaining to using the USB Audio Streaming APIs, and I still don't have a working system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Will someone at NXP be working on reproducing this issue?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 21 Oct 2019 14:29:46 GMT</pubDate>
    <dc:creator>amwilhite</dc:creator>
    <dc:date>2019-10-21T14:29:46Z</dc:date>
    <item>
      <title>USB Host Audio Stream Receive Data Length Misreporting</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936220#M3920</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm confused about the operation of the USB Host Audio APIs and was hoping someone may be able to clarify a few questions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My RT1050 is setup as a USB&amp;nbsp;Audio Host. I'm able to receive audio data from a connected device by repeatedly calling &lt;SPAN&gt;USB_HostAudioStreamRecv&lt;/SPAN&gt;. However, the dataLength parameter returned in the _HostAudioInCallback function is different from what I was expecting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Each time the &lt;SPAN&gt;_HostAudioInCallback&lt;SPAN&gt;&amp;nbsp;is called, the dataLength parameter is set to 128 bytes, despite the audioBuffer passed into the&amp;nbsp;USB_HostAudioStreamRecv&amp;nbsp;function being 2048 bytes.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, looking at the memory location of the audioBuffer, it looks like&amp;nbsp;2048 bytes of data are written between each call to&amp;nbsp;&lt;SPAN&gt;_HostAudioInCallback.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Is anyone able to explain this behavior?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="property macro token"&gt;#define AUDIO_BUFFER_SIZE (2048u)&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;static&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_HostAudioInCallback&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;param&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
 uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;data&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
 uint32_t dataLength&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
 usb_status_t status&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    USBHostAudioInstance_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;audioInstance &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USBHostAudioInstance_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;param&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceState &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; kStatus_DEV_Attached&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; kStatus_USB_Success&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
  &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
   &lt;SPAN class="token function"&gt;DEBUG_USB&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"%s: Successfully received %u bytes\r\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; __func__&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;


status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostAudioStreamRecv&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;audioBuffer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            AUDIO_BUFFER_SIZE&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            _HostAudioInCallback&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            audioInstance&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;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Oct 2019 19:10:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936220#M3920</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-01T19:10:46Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936221#M3921</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class=""&gt;Hi Austin Wilhite&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;There isn't a demo for USB Host Audio in the SDK, so I guess that you create this demo by yourself, am I correct? could you clarify what demo did you base?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Could you clarify what is the sampling rate of your device? At the point when you called the &lt;SPAN&gt;USB_HostAudioStreamRecv API, you should have set the audio interface previously. In this "set of interface", you should have the descriptor of your device, which contains the sampling rate along with the format, etc. So, the packet size depends on the capabilities of your device and format used.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;If you have a stereo audio speaker with a 96 kHz sample rate and 24-bit samples. Your speed will be 96000 x 2 channels x 4 bytes (24bit) = 768,000 bytes per second. The isochronous endpoint (used in audio class) run at a rate of one transfer per 125 us or 8000 transfers per second. This means that you have&amp;nbsp;768000 bytes per second / 8000 transfer per second = 96 bytes per transfer.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Hope this information helps you&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Best regards&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Jorge Alcala&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Oct 2019 20:12:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936221#M3921</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2019-10-07T20:12:46Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936222#M3922</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I created the USB Audio setup based off of the USB HID Mouse example. I included the state machine below that sets the control and streaming interfaces.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The device I'm streaming from has 6, 16-bit, 16kHz PCM audio channels.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was under the impression that there should be one data packet each USB Full Speed frame&amp;nbsp;of 1 ms, or 1000 transfers per second. However, you mentioned that there is instead one isochronous transfer per 125 us, or 8000 transfers per second. Can you explain why that is true?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mirroring your calculation above: 16,000 kHz * 6 channels * 2 bytes (16-bit) = 192,000 bytes per second.&lt;/P&gt;&lt;P&gt;192,000 bytes / 8000 transfers&amp;nbsp;per second = 24 bytes per transfer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm still unable to explain why the received dataLength is 128 bytes and not 24 bytes as the above calculation shows.&lt;/P&gt;&lt;P&gt;My biggest problem is that 128 is not divisible by 6, so I don't know how to interpret the data into its separate channels.&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;/*! @brief host app run status */&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;typedef&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;enum&lt;/SPAN&gt; USBHostAudioRunState
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    USBHostAudioRunState_Idle &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                      &lt;SPAN class="comment token"&gt;/*!&amp;lt; idle */&lt;/SPAN&gt;
    USBHostAudioRunState_SetControlInterface&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;           &lt;SPAN class="comment token"&gt;/*!&amp;lt; execute set interface code */&lt;/SPAN&gt;
    USBHostAudioRunState_WaitSetControlInterface&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;       &lt;SPAN class="comment token"&gt;/*!&amp;lt; wait set interface done */&lt;/SPAN&gt;
    USBHostAudioRunState_SetStreamingInterface&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;         &lt;SPAN class="comment token"&gt;/*!&amp;lt; execute set interface code */&lt;/SPAN&gt;
    USBHostAudioRunState_WaitSetStreamingInterface&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;     &lt;SPAN class="comment token"&gt;/*!&amp;lt; wait set interface done */&lt;/SPAN&gt;
    USBHostAudioRunState_ReceiveStream&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;                 &lt;SPAN class="comment token"&gt;/*!&amp;lt; set interface is done, start streaming */&lt;/SPAN&gt;
    USBHostAudioRunState_WaitReceiveStream              &lt;SPAN class="comment token"&gt;/*!&amp;lt; wait for streaming callback */&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt; USBHostAudioRunState_t&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;/*! @brief USB host audio instance structure */&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;typedef&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;struct&lt;/SPAN&gt; USBHostAudioInstance
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    usb_host_configuration_handle configHandle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/*!&amp;lt; the audio configuration handle */&lt;/SPAN&gt;
    usb_device_handle deviceHandle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;             &lt;SPAN class="comment token"&gt;/*!&amp;lt; the audio device handle */&lt;/SPAN&gt;
    usb_host_class_handle classHandle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;          &lt;SPAN class="comment token"&gt;/*!&amp;lt; the audio class handle */&lt;/SPAN&gt;
    usb_host_interface_handle streamingInterfaceHandle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;  &lt;SPAN class="comment token"&gt;/*!&amp;lt; the audio streaming interface handle */&lt;/SPAN&gt;
    usb_host_interface_handle controlInterfaceHandle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;    &lt;SPAN class="comment token"&gt;/*!&amp;lt; the audio control interface handle */&lt;/SPAN&gt;
    uint8_t deviceState&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;                        &lt;SPAN class="comment token"&gt;/*!&amp;lt; device attach/detach status */&lt;/SPAN&gt;
    uint8_t prevState&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;                          &lt;SPAN class="comment token"&gt;/*!&amp;lt; device attach/detach previous status */&lt;/SPAN&gt;
    uint8_t runState&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;                           &lt;SPAN class="comment token"&gt;/*!&amp;lt; audio application run status */&lt;/SPAN&gt;
    uint8_t runWaitState&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;   &lt;SPAN class="comment token"&gt;/*!&amp;lt; audio application wait status, go to next run status when the wait status success */&lt;/SPAN&gt;
    uint16_t maxPacketSize&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;/*!&amp;lt; Interrupt in max packet size */&lt;/SPAN&gt;
    uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;audioBuffer&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;   &lt;SPAN class="comment token"&gt;/*!&amp;lt; use to receive data */&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt; USBHostAudioInstance_t&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;


&lt;SPAN class="keyword token"&gt;static&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;_HostAudioStateManager&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;param&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    usb_status_t status&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    USBHostAudioInstance_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;audioInstance &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USBHostAudioInstance_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;param&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;/* Process device state changes (process once for each state) */&lt;/SPAN&gt;

    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceState &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;prevState&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;prevState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceState&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;switch&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceState&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; kStatus_DEV_Idle&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

            &lt;SPAN class="comment token"&gt;/* Device is attached and enumeration is done */&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; kStatus_DEV_Attached&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;

                audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_SetControlInterface&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostAudioInit&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; kStatus_USB_Success&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
     &lt;SPAN class="token function"&gt;DEBUG_USB&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"USB Host Audio class initialize failure\r\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
     &lt;SPAN class="token function"&gt;ASSERT_FAILURE&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

            &lt;SPAN class="comment token"&gt;/* Device is detached */&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; kStatus_DEV_Detached&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; kStatus_DEV_Idle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_Idle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

                &lt;SPAN class="comment token"&gt;/* Audio class de-initialization */&lt;/SPAN&gt;
                &lt;SPAN class="token function"&gt;USB_HostAudioDeinit&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;deviceHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                  audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

                audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; NULL&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                &lt;SPAN class="token function"&gt;DEBUG_USB&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"USB Audio device detached\r\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

            &lt;SPAN class="keyword token"&gt;default&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;/* Process the run state */&lt;/SPAN&gt;

    &lt;SPAN class="keyword token"&gt;switch&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; USBHostAudioRunState_Idle&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

        &lt;SPAN class="comment token"&gt;/* Set the audio control interface */&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; USBHostAudioRunState_SetControlInterface&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runWaitState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_WaitSetControlInterface&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_Idle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostAudioControlSetInterface&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;controlInterfaceHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               _HostAudioControlCallback&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               audioInstance&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="token function"&gt;ASSERT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; kStatus_USB_Success&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   &lt;SPAN class="token function"&gt;DEBUG_USB&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Set Control Interface Complete\r\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

        &lt;SPAN class="comment token"&gt;/* Set the audio streaming interface */&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; USBHostAudioRunState_SetStreamingInterface&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
   audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runWaitState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_WaitSetStreamingInterface&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_Idle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostAudioStreamSetInterface&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;streamingInterfaceHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               _HostAudioControlCallback&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
               audioInstance&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="token function"&gt;ASSERT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; kStatus_USB_Success&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   &lt;SPAN class="token function"&gt;DEBUG_USB&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Set Streaming Interface Complete\r\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

        &lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; USBHostAudioRunState_ReceiveStream&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runWaitState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_WaitReceiveStream&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;runState &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USBHostAudioRunState_Idle&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
         status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostAudioStreamRecv&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;classHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                  audioInstance&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;audioBuffer&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            AUDIO_BUFFER_SIZE&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            _HostAudioInCallback&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
            audioInstance&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

         &lt;SPAN class="token function"&gt;ASSERT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;status &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; kStatus_USB_Success&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;default&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;break&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&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;/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;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;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Oct 2019 17:43:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936222#M3922</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-09T17:43:38Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936223#M3923</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class=""&gt;Hi Austin Wilhite &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Sorry, the 8000 bytes was making reference for a High-Speed device, for Full Speed you are correct, you will have 1 ms interval which represents 1000 transfer per second.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;So according to your device, you will have 16,000 kHz * 6 channels * 2 bytes (16-bit) = 192,000 bytes per second and&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;192,000 bytes / 1000 transfers&amp;nbsp;per second = 192 bytes per transfer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;This information is requested by the host and the device should have it in the descriptor. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;You should have a _USB_HostAudioOpenInterface function, in this part, you have a line as:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt; pipe_init&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;maxPacketSize &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; 
&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint16_t&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;USB_SHORT_FROM_LITTLE_ENDIAN_ADDRESS&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ep_desc&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;wMaxPacketSize&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; USB_DESCRIPTOR_ENDPOINT_MAXPACKETSIZE_SIZE_MASK&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;/PRE&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Which is then copy to the&lt;STRONG&gt; audioPtr-&amp;gt;inPacketSize&lt;/STRONG&gt; field, here you will have the maximum packet size that you can use in the &lt;SPAN&gt;USB_HostAudioStreamRecv&amp;nbsp;function. You can actually get this size with the function &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;AUDIO_BUFFER_SIZE = USB_HostAudioPacketSize(Audio_Handle_name, USB_ENDPOINT_ISOCHRONOUS, USB_IN);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;status = USB_HostAudioStreamRecv(audioInstance-&amp;gt;classHandle,&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp; audioInstance-&amp;gt;audioBuffer,&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp; AUDIO_BUFFER_SIZE,&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp; _HostAudioInCallback,&lt;BR /&gt;&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;&amp;nbsp;&amp;nbsp; audioInstance)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Hope this could help&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Best regards&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Oct 2019 20:57:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936223#M3923</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2019-10-10T20:57:47Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936224#M3924</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I did as you suggested and found the maxPacketSize to be 204 bytes, and then set the&amp;nbsp;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;AUDIO_BUFFER_SIZE variable to 204.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Now, each call to&amp;nbsp;&lt;SPAN&gt;_HostAudioInCallback returns a dataLength of 12 bytes.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;Although the 12 bytes is at least divisible by the 6 channels, it's still not the 192 bytes I was expecting.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;I've attached an image of the audioPtr's values as seen with the debugger in the&amp;nbsp;_USB_HostAudioOpenInterface function.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #000000; "&gt;I've confirmed the number of channels, bit resolution, and sampling frequency with the values in the structure.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;Do you have any insight into why the dataLength is now 12 bytes rather than 192?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="audioptr.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/93331i06638F9A7733BA19/image-size/large?v=v2&amp;amp;px=999" role="button" title="audioptr.png" alt="audioptr.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Oct 2019 18:03:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936224#M3924</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-14T18:03:54Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936225#M3925</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class=""&gt;Hi Austin Wilhite&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;At what speed are you requesting data? if you decrease the time between each &lt;SPAN&gt;USB_HostAudioStreamRecv? Do you still get 12 bytes?&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;&lt;SPAN&gt;Please remember that the 204 size that you get is the max capacity that your device can give, but it doesn't mean that it will give you the 204. In an isochronous communication, the bandwidth has to be guaranteed, but if the device is not ready to provide the information, it will be less than the max packate size (204 in your case).&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;&lt;SPAN&gt;Hope this helps&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class="" title=""&gt;&lt;SPAN&gt;Best regards&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Oct 2019 16:59:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936225#M3925</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2019-10-15T16:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936226#M3926</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;USB_HostAudioStreamRecv is called continuously in a task's loop as soon as the callback from the previous request is received. Therefore, data is being requested as fast as possible.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;I was able to take a trace of the USB bus with another device connected to my RT1050 host.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;This device has the following characteristics:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;1 mono audio channel&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;16-bit resolution&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;44100 Hz sampling rate&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Expected bandwidth: 44100 Hz * 2 bytes (16-bit) * 1 channel = 88,200 bytes per second.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Expected packet size = 88,200 bytes per second / 1000 frames per second = 88.2 bytes&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Due to the non-integer packet size calculated, I expect 88-byte packets and a 2 byte-larger packet every tenth packet.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Looking at the trace, the USB device is indeed sending 88-byte and 90-byte packets.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;In the&amp;nbsp;&lt;SPAN&gt;_HostAudioInCallback, dataLength is still being set to 12. However, looking at the received data buffer in memory, I see that the RT1050 actually did receive all 88 bytes of the packet that I saw in the trace of the bus.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;Here's the trace that shows the 88-byte packet and an expanded view that shows the packet's data.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="88 Bytes.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/91530i123B63C3CB9A8BF4/image-size/large?v=v2&amp;amp;px=999" role="button" title="88 Bytes.PNG" alt="88 Bytes.PNG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="88 Bytes Data.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/91487iF51B21828A59C592/image-size/large?v=v2&amp;amp;px=999" role="button" title="88 Bytes Data.PNG" alt="88 Bytes Data.PNG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;Here's the memory viewer window showing the receipt of all 88 bytes of data that was seen on the bus.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="Memery Viewer 88 bytess.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/91589i9AD09B2299C70DD7/image-size/large?v=v2&amp;amp;px=999" role="button" title="Memery Viewer 88 bytess.PNG" alt="Memery Viewer 88 bytess.PNG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #000000; "&gt;I there a configuration setting that can lead to this improper&amp;nbsp;reporting of dataLength, or is there a flaw in the USB stack that is causing this issue?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Oct 2019 14:09:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936226#M3926</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-16T14:09:53Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936227#M3927</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can I get an update on this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's been almost three weeks since my initial&amp;nbsp;post pertaining to using the USB Audio Streaming APIs, and I still don't have a working system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Will someone at NXP be working on reproducing this issue?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Oct 2019 14:29:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936227#M3927</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-21T14:29:46Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936228#M3928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Austin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you share the code that you are using? Also, could you describe how do you set the received task? this could be a problem related to the stack as you mentioned that you received all the data, but I need to reproduce the issue in my side.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Jorge Alcala&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Oct 2019 17:33:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936228#M3928</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2019-10-24T17:33:03Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936229#M3929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was able to identify the bug in the USB stack that&amp;nbsp;causes the misreported data length.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem exists in the&amp;nbsp;USB_HostEhciTransactionDone function in the usb/host/usb_host_echi.c file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lines 3700-3704&lt;/P&gt;&lt;P&gt;Replace&lt;/P&gt;&lt;PRE class="language-python line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; remove itd &lt;SPAN class="keyword token"&gt;from&lt;/SPAN&gt; frame list &lt;SPAN class="operator token"&gt;and&lt;/SPAN&gt; release itd &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;
dataLength &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; USB_HostEhciItdArrayRelease&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ehciInstance&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                        &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_itd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;union1&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitHead&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                        &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_itd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;union2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitTail&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
transfer&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; dataLength&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;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;With&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/* remove itd from frame list and release itd */&lt;/SPAN&gt;
transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostEhciItdArrayRelease&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ehciInstance&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                                           &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_itd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union1&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitHead&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                                           &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_itd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitTail&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferLength &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;
                                                      &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                                                      &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferLength &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar&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;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lines 3737-41&lt;/P&gt;&lt;P&gt;Replace&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/* remove sitd from frame list and release itd */&lt;/SPAN&gt;
dataLength &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostEhciSitdArrayRelease&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ehciInstance&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_sitd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union1&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitHead&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                          &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_sitd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitTail&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; dataLength&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;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;With&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/* remove itd from frame list and release itd */&lt;/SPAN&gt;
transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;USB_HostEhciSitdArrayRelease&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ehciInstance&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                                       &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_sitd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union1&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitHead&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                                       &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;usb_host_ehci_sitd_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;union2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;unitTail&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferLength &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;?&lt;/SPAN&gt;
                                                      &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                                                      &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferLength &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; transfer&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;transferSofar&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;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Oct 2019 16:20:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936229#M3929</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-10-25T16:20:55Z</dc:date>
    </item>
    <item>
      <title>Re: USB Host Audio Stream Receive</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936230#M3930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;Can you explain why the receive buffer size can only be set to a maximum value of the max packet size?&amp;nbsp;&lt;SPAN style="background-color: #ffffff; color: #000000;"&gt;Why&amp;nbsp;is it unable to receive an entire transaction or even transfer worth of data at a time, rather than just one packet?&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; color: #000000;"&gt;Based on Table 5-4 in the USB 2.0 spec, a data payload of 32 bytes should be capable of 36 transfers per frame.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Nov 2019 20:01:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/USB-Host-Audio-Stream-Receive-Data-Length-Misreporting/m-p/936230#M3930</guid>
      <dc:creator>amwilhite</dc:creator>
      <dc:date>2019-11-04T20:01:02Z</dc:date>
    </item>
  </channel>
</rss>

