<?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 In MQX in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/USB-In-MQX/m-p/212416#M5278</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is one issue...&lt;/P&gt;&lt;P&gt;You can get err. code 97 when you receive less bytes than requested.&lt;/P&gt;&lt;P&gt;To distinguish if there was really transfer error, the buffer pointer in the callback should be NULL. If it is not, then buffer contains valid data and the size contains number of bytes received.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 Jun 2011 15:42:18 GMT</pubDate>
    <dc:creator>JuroV</dc:creator>
    <dc:date>2011-06-13T15:42:18Z</dc:date>
    <item>
      <title>USB In MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/USB-In-MQX/m-p/212415#M5277</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a USB device class&lt;BR /&gt;3, subclass 0 and protocol 0. I need to communicate it with kit twrmcf52259.&lt;BR /&gt;I’m in trouble to do it, can you help me? I'm following the general steps from&lt;BR /&gt;manual MQXUSBHOSTAPIRM.pdf (page 8):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) _usb_host_init&lt;/P&gt;&lt;P&gt;Status : USB_OK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2) _usb_host_open_pipe&lt;/P&gt;&lt;P&gt;PIPE_INIT_PARAM_STRUCT&lt;/P&gt;&lt;P&gt;pipe_s_struct.DEV_INSTANCE= &amp;amp;host_handle;&lt;/P&gt;&lt;P&gt;pipe_s_struct.INTERVAL=40;&lt;/P&gt;&lt;P&gt;pipe_s_struct.MAX_PACKET_SIZE=1024;&lt;/P&gt;&lt;P&gt;pipe_s_struct.NAK_COUNT=0xA;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FIRST_FRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FIRST_UFRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FLAGS=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.DEVICE_ADDRESS=0x00;&lt;/P&gt;&lt;P&gt;pipe_s_struct.ENDPOINT_NUMBER=0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.DIRECTION=USB_SEND;&lt;/P&gt;&lt;P&gt;pipe_s_struct.PIPETYPE=USB_INTERRUPT_PIPE;&lt;/P&gt;&lt;P&gt;pipe_s_struct.SPEED=2;&lt;/P&gt;&lt;P&gt;pipe_s_struct.TRS_PER_UFRAME=1;&lt;/P&gt;&lt;P&gt;Status: Open pipe OK!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3) _usb_host_send_data&lt;/P&gt;&lt;P&gt;TR_INIT_PARAM_STRUCT&lt;/P&gt;&lt;P&gt;tr_send.TR_INDEX= 0x1;&lt;/P&gt;&lt;P&gt;tr_send.TX_BUFFER= tx_buffer;&lt;/P&gt;&lt;P&gt;tr_send.RX_BUFFER= rx_buffer;&lt;/P&gt;&lt;P&gt;tr_send.TX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_send.RX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_send.CALLBACK= pipe_end_tx;&lt;/P&gt;&lt;P&gt;tr_send.CALLBACK_PARAM= 0x0;&lt;/P&gt;&lt;P&gt;tr_send.DEV_REQ_PTR= dev_req;&lt;/P&gt;&lt;P&gt;Status: USB_STATUS_TRANSFER_QUEUED&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4) _usb_host_recv_data&lt;/P&gt;&lt;P&gt;status:&lt;BR /&gt;USB_STATUS_TRANSFER_QUEUED&lt;/P&gt;&lt;P&gt;pipe_end_tx (função do&lt;BR /&gt;TR_INIT_PARAM_STRUCT)&lt;/P&gt;&lt;P&gt;status=97&lt;/P&gt;&lt;P&gt;97: USBERR_TR_FAILED&lt;/P&gt;&lt;P&gt;pipe_end_rx&lt;/P&gt;&lt;P&gt;status=97&lt;/P&gt;&lt;P&gt;97: USBERR_TR_FAILED&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Waiting for an answer,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Daísa de Lima&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;P.S. If it’s necessary, the&lt;BR /&gt;code is below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/**HEADER********************************************************************&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* Copyright&lt;BR /&gt;(c) 2008 &lt;U&gt;Freescale&lt;/U&gt; Semiconductor;&lt;/P&gt;&lt;P&gt;* All Rights&lt;BR /&gt;Reserved&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* Copyright&lt;BR /&gt;(c) 1989-2008 ARC International;&lt;/P&gt;&lt;P&gt;* All Rights&lt;BR /&gt;Reserved&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;***************************************************************************&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* THIS&lt;BR /&gt;SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR&lt;/P&gt;&lt;P&gt;* IMPLIED&lt;BR /&gt;WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES&lt;/P&gt;&lt;P&gt;* OF&lt;BR /&gt;MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.&lt;/P&gt;&lt;P&gt;* IN NO EVENT&lt;BR /&gt;SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,&lt;/P&gt;&lt;P&gt;* INDIRECT,&lt;BR /&gt;INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;/P&gt;&lt;P&gt;* (INCLUDING,&lt;BR /&gt;BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR&lt;/P&gt;&lt;P&gt;* SERVICES;&lt;BR /&gt;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)&lt;/P&gt;&lt;P&gt;* HOWEVER&lt;BR /&gt;CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,&lt;/P&gt;&lt;P&gt;* STRICT&lt;BR /&gt;LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING&lt;/P&gt;&lt;P&gt;* IN ANY WAY&lt;BR /&gt;OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF&lt;/P&gt;&lt;P&gt;* THE&lt;BR /&gt;POSSIBILITY OF SUCH DAMAGE.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*END************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#include&lt;/STRONG&gt; "main.h"&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#include&lt;/STRONG&gt; "usb_classes.h"&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;_usb_host_handle host_handle; /* Global handle for&lt;BR /&gt;calling host */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;_usb_pipe_handle pipe_s;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;_usb_pipe_handle pipe_r;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;USB_STATUS status=USB_OK;&lt;/P&gt;&lt;P&gt;PIPE_INIT_PARAM_STRUCT&lt;BR /&gt;pipe_s_struct;&lt;/P&gt;&lt;P&gt;PIPE_INIT_PARAM_STRUCT&lt;BR /&gt;pipe_r_struct;&lt;/P&gt;&lt;P&gt;TR_INIT_PARAM_STRUCT&lt;BR /&gt;tr_send;&lt;/P&gt;&lt;P&gt;TR_INIT_PARAM_STRUCT&lt;BR /&gt;tr_recv;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;uchar tx_buffer[512];&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;uchar rx_buffer[512];&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;uchar dev_req[512];&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;extern&lt;/STRONG&gt; &lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_cdc_acm_event&lt;/STRONG&gt;(_usb_device_instance_handle,&lt;BR /&gt;_usb_interface_descriptor_handle intf_handle, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;extern&lt;/STRONG&gt; &lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_cdc_data_event&lt;/STRONG&gt;(_usb_device_instance_handle,&lt;BR /&gt;_usb_interface_descriptor_handle intf_handle, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;extern&lt;/STRONG&gt; &lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_hid_event&lt;/STRONG&gt;(_usb_device_instance_handle,&lt;BR /&gt;_usb_interface_descriptor_handle intf_handle, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;extern&lt;/STRONG&gt; &lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_msd_event&lt;/STRONG&gt;(_usb_device_instance_handle,&lt;BR /&gt;_usb_interface_descriptor_handle intf_handle, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_event&lt;/STRONG&gt;(_usb_device_instance_handle,&lt;BR /&gt;_usb_interface_descriptor_handle intf_handle, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;pipe_end_tx&lt;/STRONG&gt;(_usb_pipe_handle,&lt;BR /&gt;pointer, uchar_ptr, uint_32, uint_32);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;pipe_end_rx&lt;/STRONG&gt;(_usb_pipe_handle,&lt;BR /&gt;pointer, uchar_ptr, uint_32, uint_32);&lt;/P&gt;&lt;P&gt;/************************************************************************************&lt;/P&gt;&lt;P&gt;Table of&lt;BR /&gt;driver capabilities this application wants to use. See Host API document for&lt;/P&gt;&lt;P&gt;details on&lt;BR /&gt;How to define a driver info table.&lt;/P&gt;&lt;P&gt;************************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;BR /&gt;USB_HOST_DRIVER_INFO DriverInfoTable[] =&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;{0x00, 0x00}, /* Vendor ID per USB-IF */&lt;/P&gt;&lt;P&gt;{0x00, 0x00}, /* Product ID per manufacturer */&lt;/P&gt;&lt;P&gt;3, /*&lt;BR /&gt;Class code */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Sub-Class code */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Protocol */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Reserved */&lt;/P&gt;&lt;P&gt;usb_host_event /* Application call back function */&lt;/P&gt;&lt;P&gt;},&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;{0x00, 0x00}, /* Vendor ID per USB-IF */&lt;/P&gt;&lt;P&gt;{0x00, 0x00}, /* Product ID per manufacturer */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Class code */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Sub-Class code */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Protocol */&lt;/P&gt;&lt;P&gt;0, /*&lt;BR /&gt;Reserved */&lt;/P&gt;&lt;P&gt;usb_host_event /* Application call back function */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;CLASS_MAP&lt;BR /&gt;class_interface_map[] =&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;NULL,&lt;/P&gt;&lt;P&gt;0,&lt;/P&gt;&lt;P&gt;0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;　&lt;/P&gt;&lt;P&gt;/*FUNCTION*----------------------------------------------------------------&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* Function&lt;BR /&gt;Name : usbh_init&lt;/P&gt;&lt;P&gt;* Returned&lt;BR /&gt;Value : None&lt;/P&gt;&lt;P&gt;* Comments :&lt;/P&gt;&lt;P&gt;* Initializes&lt;BR /&gt;USB host&lt;/P&gt;&lt;P&gt;*END*--------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usbh_init&lt;/STRONG&gt;()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;USB_STATUS status = USB_OK;&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;Tamanho&lt;/U&gt; do host_handle:%d\n\r", &lt;STRONG&gt;sizeof&lt;/STRONG&gt;(host_handle));&lt;/P&gt;&lt;P&gt;printf("Valor host_handle &lt;U&gt;antes&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)host_handle);&lt;/P&gt;&lt;P&gt;_int_disable();&lt;/P&gt;&lt;P&gt;_usb_host_driver_install(0,&lt;BR /&gt;(pointer)&amp;amp;_bsp_usb_host_callback_table);&lt;/P&gt;&lt;P&gt;status = _usb_host_init&lt;/P&gt;&lt;P&gt;(HOST_CONTROLLER_NUMBER, /* Use value in header file */&lt;/P&gt;&lt;P&gt;MAX_FRAME_SIZE, /* Frame size per USB &lt;U&gt;spec&lt;/U&gt; */&lt;/P&gt;&lt;P&gt;&amp;amp;host_handle); /* Returned pointer */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (status != USB_OK)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;printf("USB Host Initialization failed. STATUS: %x\n",&lt;BR /&gt;status);&lt;/P&gt;&lt;P&gt;fflush(stdout);&lt;/P&gt;&lt;P&gt;exit(1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;printf("Valor host_handle &lt;U&gt;depois&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)host_handle);&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt;** Since we&lt;BR /&gt;are going to act as the host driver, register the driver&lt;/P&gt;&lt;P&gt;**&lt;BR /&gt;information for wanted class/subclass/protocols&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;status =&lt;BR /&gt;_usb_host_driver_info_register(host_handle, DriverInfoTable);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt; (status != USB_OK)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;printf("Driver Registration failed. STATUS: %x\n",&lt;BR /&gt;status);&lt;/P&gt;&lt;P&gt;fflush(stdout);&lt;/P&gt;&lt;P&gt;exit(1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;_int_enable();&lt;/P&gt;&lt;P&gt;printf("\nMQX USB\nWaiting for USB device to be&lt;BR /&gt;attached...\n");&lt;/P&gt;&lt;P&gt;fflush(stdout);&lt;/P&gt;&lt;P&gt;/* If a&lt;BR /&gt;device will be attached, handler in usbh_&amp;lt;class&amp;gt;_handler.c file&lt;/P&gt;&lt;P&gt;** will catch&lt;BR /&gt;that event&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;/*FUNCTION*----------------------------------------------------------------&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* Function&lt;BR /&gt;Name : usb_host_event&lt;/P&gt;&lt;P&gt;* Returned&lt;BR /&gt;Value : None&lt;/P&gt;&lt;P&gt;* Comments :&lt;/P&gt;&lt;P&gt;* Called when&lt;BR /&gt;a device is attached / detached, but not recognized by&lt;/P&gt;&lt;P&gt;* any class&lt;BR /&gt;driver.&lt;/P&gt;&lt;P&gt;*END*--------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;usb_host_event&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;(&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;pointer to device instance */&lt;/P&gt;&lt;P&gt;_usb_device_instance_handle&lt;BR /&gt;dev_handle,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;pointer to interface descriptor */&lt;/P&gt;&lt;P&gt;_usb_interface_descriptor_handle&lt;BR /&gt;intf_handle,&lt;/P&gt;&lt;P&gt;/* [IN] code&lt;BR /&gt;number for event causing &lt;U&gt;callback&lt;/U&gt; */&lt;/P&gt;&lt;P&gt;uint_32 event_code&lt;/P&gt;&lt;P&gt;)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;switch&lt;/STRONG&gt;&lt;BR /&gt;(event_code) {&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;case&lt;/STRONG&gt;&lt;BR /&gt;USB_CONFIG_EVENT:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;case&lt;/STRONG&gt;&lt;BR /&gt;USB_ATTACH_EVENT:&lt;/P&gt;&lt;P&gt;printf("----- &lt;U&gt;Aparelho&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;ligado&lt;/U&gt;! -----\n");&lt;/P&gt;&lt;P&gt;fflush(stdout);&lt;/P&gt;&lt;P&gt;pipe_s_struct.DEV_INSTANCE=&lt;BR /&gt;&amp;amp;host_handle;&lt;/P&gt;&lt;P&gt;pipe_s_struct.INTERVAL=40;&lt;/P&gt;&lt;P&gt;pipe_s_struct.MAX_PACKET_SIZE=1024;&lt;/P&gt;&lt;P&gt;pipe_s_struct.NAK_COUNT=0xA;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FIRST_FRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FIRST_UFRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.FLAGS=0x0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.DEVICE_ADDRESS=0x00;&lt;/P&gt;&lt;P&gt;pipe_s_struct.ENDPOINT_NUMBER=0;&lt;/P&gt;&lt;P&gt;pipe_s_struct.DIRECTION=USB_SEND;&lt;/P&gt;&lt;P&gt;pipe_s_struct.PIPETYPE=USB_INTERRUPT_PIPE;&lt;/P&gt;&lt;P&gt;pipe_s_struct.SPEED=2;&lt;/P&gt;&lt;P&gt;pipe_s_struct.TRS_PER_UFRAME=1;&lt;/P&gt;&lt;P&gt;printf("Pipe &lt;U&gt;antes&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)pipe_s);&lt;/P&gt;&lt;P&gt;status=&lt;BR /&gt;_usb_host_open_pipe(host_handle,&amp;amp;pipe_s_struct,&amp;amp;pipe_s);&lt;/P&gt;&lt;P&gt;printf("Pipe &lt;U&gt;depois&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)pipe_s);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;(status==USBERR_OPEN_PIPE_FAILED)&lt;/P&gt;&lt;P&gt;printf("\nErro:%x\n\r",&lt;BR /&gt;status);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;{&lt;/P&gt;&lt;P&gt;printf("Open pipe OK!!!%x\n\r", status);}&lt;/P&gt;&lt;P&gt;pipe_r_struct.DEV_INSTANCE=&lt;BR /&gt;&amp;amp;host_handle;&lt;/P&gt;&lt;P&gt;pipe_r_struct.INTERVAL=40;&lt;/P&gt;&lt;P&gt;pipe_r_struct.MAX_PACKET_SIZE=1024;&lt;/P&gt;&lt;P&gt;pipe_r_struct.NAK_COUNT=0xA;&lt;/P&gt;&lt;P&gt;pipe_r_struct.FIRST_FRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_r_struct.FIRST_UFRAME=0x0;&lt;/P&gt;&lt;P&gt;pipe_r_struct.FLAGS=0x0;&lt;/P&gt;&lt;P&gt;pipe_r_struct.DEVICE_ADDRESS=0x00;&lt;/P&gt;&lt;P&gt;pipe_r_struct.ENDPOINT_NUMBER=0;&lt;/P&gt;&lt;P&gt;pipe_r_struct.DIRECTION=USB_RECV;&lt;/P&gt;&lt;P&gt;pipe_r_struct.PIPETYPE=USB_INTERRUPT_PIPE;&lt;/P&gt;&lt;P&gt;pipe_r_struct.SPEED=2;&lt;/P&gt;&lt;P&gt;pipe_r_struct.TRS_PER_UFRAME=1;&lt;/P&gt;&lt;P&gt;printf("Pipe &lt;U&gt;antes&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)pipe_r);&lt;/P&gt;&lt;P&gt;status=&lt;BR /&gt;_usb_host_open_pipe(host_handle,&amp;amp;pipe_r_struct,&amp;amp;pipe_r);&lt;/P&gt;&lt;P&gt;printf("Pipe &lt;U&gt;depois&lt;/U&gt;:%x\n\r",&lt;BR /&gt;(uint_32)pipe_r);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;(status==USBERR_OPEN_PIPE_FAILED)&lt;/P&gt;&lt;P&gt;printf("\nErro:%x\n\r",&lt;BR /&gt;status);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;{&lt;/P&gt;&lt;P&gt;printf("Open pipe OK!!!%x\n\r", status);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;tr_send.TR_INDEX= 0x1;&lt;/P&gt;&lt;P&gt;tr_send.TX_BUFFER=&lt;BR /&gt;tx_buffer;&lt;/P&gt;&lt;P&gt;tr_send.RX_BUFFER=&lt;BR /&gt;rx_buffer;&lt;/P&gt;&lt;P&gt;tr_send.TX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_send.RX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_send.CALLBACK=&lt;BR /&gt;pipe_end_tx;&lt;/P&gt;&lt;P&gt;tr_send.CALLBACK_PARAM=&lt;BR /&gt;0x0;&lt;/P&gt;&lt;P&gt;tr_send.DEV_REQ_PTR=&lt;BR /&gt;dev_req;&lt;/P&gt;&lt;P&gt;tx_buffer[0]=0x12;&lt;/P&gt;&lt;P&gt;tx_buffer[1]=0x16;&lt;/P&gt;&lt;P&gt;tx_buffer[2]=0x18;&lt;/P&gt;&lt;P&gt;tx_buffer[3]=0x20;&lt;/P&gt;&lt;P&gt;status=_usb_host_send_data(host_handle,pipe_s,&amp;amp;tr_send);&lt;/P&gt;&lt;P&gt;printf("Status send_data:%x\n\r", status);&lt;/P&gt;&lt;P&gt;status=_usb_host_get_transfer_status(pipe_s,&lt;BR /&gt;0x1);&lt;/P&gt;&lt;P&gt;printf("Status get_transfer_status:%x\n\r",&lt;BR /&gt;status);&lt;/P&gt;&lt;P&gt;// &lt;U&gt;Retorno&lt;/U&gt;&lt;BR /&gt;get_transfer:&lt;/P&gt;&lt;P&gt;//&lt;BR /&gt;USB_STATUS_IDLE (no transfer is queued or completed)-&amp;gt; USB_STATUS_IDLE (0)&lt;/P&gt;&lt;P&gt;//&lt;BR /&gt;USB_STATUS_TRANSFER_QUEUED (transfer is queued, but is not in progress)-&amp;gt;&lt;BR /&gt;USB_STATUS_TRANSFER_QUEUED(7)&lt;/P&gt;&lt;P&gt;//&lt;BR /&gt;USB_STATUS_TRANSFER_IN_PROGRESS (transfer is queued in the hardware and is in&lt;/P&gt;&lt;P&gt;//&lt;BR /&gt;progress)-&amp;gt; USB_STATUS_TRANSFER_IN_PROGRESS(3)&lt;/P&gt;&lt;P&gt;//&lt;BR /&gt;USBERR_INVALID_PIPE_HANDLE (error; pipe_handle is not&lt;BR /&gt;valid)-&amp;gt;USBERR_INVALID_PIPE_HANDLE (0x8F) 143&lt;/P&gt;&lt;P&gt;_time_delay(8000);&lt;/P&gt;&lt;P&gt;tr_recv.TR_INDEX= 0x1;&lt;/P&gt;&lt;P&gt;tr_recv.TX_BUFFER=&lt;BR /&gt;tx_buffer;&lt;/P&gt;&lt;P&gt;tr_recv.RX_BUFFER=&lt;BR /&gt;rx_buffer;&lt;/P&gt;&lt;P&gt;tr_recv.TX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_recv.RX_LENGTH= 0x4;&lt;/P&gt;&lt;P&gt;tr_recv.CALLBACK=&lt;BR /&gt;pipe_end_rx;&lt;/P&gt;&lt;P&gt;tr_recv.CALLBACK_PARAM=&lt;BR /&gt;0x0;&lt;/P&gt;&lt;P&gt;tr_recv.DEV_REQ_PTR=&lt;BR /&gt;dev_req;&lt;/P&gt;&lt;P&gt;status=_usb_host_recv_data(host_handle,pipe_r,&lt;BR /&gt;&amp;amp;tr_recv);&lt;/P&gt;&lt;P&gt;printf("Status recv_data:%x\n\r", status);&lt;/P&gt;&lt;P&gt;_time_delay(3000);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;break&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;case&lt;/STRONG&gt;&lt;BR /&gt;USB_DETACH_EVENT:&lt;/P&gt;&lt;P&gt;printf("----- &lt;U&gt;Aparelho&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;desligado&lt;/U&gt;! -----\n");&lt;/P&gt;&lt;P&gt;fflush(stdout);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;break&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;default&lt;/STRONG&gt;:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;break&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//&lt;U&gt;callback&lt;/U&gt; function &lt;U&gt;para&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;fim&lt;/U&gt; &lt;U&gt;de&lt;/U&gt; &lt;U&gt;tx&lt;/U&gt; no pipe&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;pipe_end_tx&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;(&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;pointer to pipe */&lt;/P&gt;&lt;P&gt;_usb_pipe_handle&lt;BR /&gt;pipe_handle,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;user-defined parameter */&lt;/P&gt;&lt;P&gt;pointer user_parm,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;buffer address */&lt;/P&gt;&lt;P&gt;uchar_ptr buffer,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;length of data transferred */&lt;/P&gt;&lt;P&gt;uint_32 buflen,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;status, hopefully USB_OK or USB_DONE */&lt;/P&gt;&lt;P&gt;uint_32 status&lt;/P&gt;&lt;P&gt;)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;printf("Pipe_end_tx\n\r");&lt;/P&gt;&lt;P&gt;printf("Status &lt;U&gt;tx&lt;/U&gt;:%x\n\r", status);&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;buflen&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;tx&lt;/U&gt;:%x\n\r", buflen);&lt;/P&gt;&lt;P&gt;printf("user_parm &lt;U&gt;tx&lt;/U&gt;:%x\n\r",&lt;BR /&gt;user_parm);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;//&lt;U&gt;callback&lt;/U&gt; function &lt;U&gt;para&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;fim&lt;/U&gt; &lt;U&gt;de&lt;/U&gt; &lt;U&gt;rx&lt;/U&gt; no pipe&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;pipe_end_rx&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;(&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;pointer to pipe */&lt;/P&gt;&lt;P&gt;_usb_pipe_handle&lt;BR /&gt;pipe_handle,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;user-defined parameter */&lt;/P&gt;&lt;P&gt;pointer user_parm,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;buffer address */&lt;/P&gt;&lt;P&gt;uchar_ptr buffer,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;length of data transferred */&lt;/P&gt;&lt;P&gt;uint_32 buflen,&lt;/P&gt;&lt;P&gt;/* [IN]&lt;BR /&gt;status, hopefully USB_OK or USB_DONE */&lt;/P&gt;&lt;P&gt;uint_32 status&lt;/P&gt;&lt;P&gt;)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;printf("Pipe_end_rx\n\r");&lt;/P&gt;&lt;P&gt;printf("Status &lt;U&gt;rx&lt;/U&gt;:%x\n\r", status);&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;buflen&lt;/U&gt; &lt;U&gt;rx&lt;/U&gt;:%x\n\r",&lt;BR /&gt;buflen);&lt;/P&gt;&lt;P&gt;printf("user_parm &lt;U&gt;rx&lt;/U&gt;:%x\n\r",&lt;BR /&gt;user_parm);&lt;/P&gt;&lt;P&gt;printf("pipe_handle &lt;U&gt;rx&lt;/U&gt;:%x\n\r",&lt;BR /&gt;pipe_handle);&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;Dado&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;recebido&lt;/U&gt; 0:%x\n\r", *buffer);&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;Dado&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;recebido&lt;/U&gt; 1:%x\n\r", *(buffer+1));&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;Dado&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;recebido&lt;/U&gt; 2:%x\n\r", *(buffer+2));&lt;/P&gt;&lt;P&gt;printf("&lt;U&gt;Dado&lt;/U&gt;&lt;BR /&gt;&lt;U&gt;recebido&lt;/U&gt; 3:%x\n\r", *(buffer+3));&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Jun 2011 11:00:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/USB-In-MQX/m-p/212415#M5277</guid>
      <dc:creator>asiad</dc:creator>
      <dc:date>2011-06-07T11:00:01Z</dc:date>
    </item>
    <item>
      <title>Re: USB In MQX</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/USB-In-MQX/m-p/212416#M5278</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is one issue...&lt;/P&gt;&lt;P&gt;You can get err. code 97 when you receive less bytes than requested.&lt;/P&gt;&lt;P&gt;To distinguish if there was really transfer error, the buffer pointer in the callback should be NULL. If it is not, then buffer contains valid data and the size contains number of bytes received.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jun 2011 15:42:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/USB-In-MQX/m-p/212416#M5278</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2011-06-13T15:42:18Z</dc:date>
    </item>
  </channel>
</rss>

