Reason for Xferdata to return false other than timeout?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 I am using the .NET dll from SuiteUSB to interface with a FX2LP. In my PC application I am calling the BulkInEndpt.Xferdata method at an interval of about 250ms. The documentation makes it sound like the only reason the Xferdata function should return false is because of a timeout, however I am seeing some transfers return a false value immediately rather than waiting for a timeout. Why could this be happening?

   

I have tried adjusting the timeout from 1000ms to 10,000ms and everywhere in between and still gotten the same result. I have also tried setting the timeout to 0 to wait forever but will stll see xferdata return a false immediately.

   

I noticed there are UsbdStatus and NtStatus members of the CyUSBEndPoint Class that contain error codes of the xferdata method. Is there any further documentation available to explain what the error codes mean?

   

-Pat

0 Likes
7 Replies
Anonymous
Not applicable

 Hi,

   

       What is the error code that you got with UsbdStatus and NtStatus members???Check firmware for proper configuration of endpoints.

   

Thanks

   

Prajith

0 Likes
Anonymous
Not applicable

 The error code i see for Usbbdstatus is 0xC0000011, and the error code is see for NtStatus is 0xC0000001. 

   

I will double check my endpoint configuration in firmware.

   

-Pat

0 Likes
Anonymous
Not applicable

 You can get to know the string that represents UsbdStatus error code using UsbdStatusString( ) method. Please refer CyUsb.dll programmer's reference for details. What is the string being returned?

   

 

   

Regards,

   

Gayathri

0 Likes
Anonymous
Not applicable

The string being returned by UsbStatusString() is "[state=HALTED status=UNKNOWN]"

0 Likes
Anonymous
Not applicable

 Hi,

   

        The status code (0xC0000011) is mapped to USBD_STATUS_XACT_ERROR. This XACT error refers to a Transaction Error.

   

         A device driver for a USB device may observe that a USB Transfer to or from the device fails due to a Transaction Error. This error is reported to USB device drivers by the Microsoft USB core driver stack via the USB status code USBD_STATUS_XACT_ERROR. In the USB EHCI specification, the following is the definition of a transaction error:

   

         Transaction Error (XactErr). Set to a one by the Host Controller during status update in the case where the host did not receive a valid response from the device (Timeout, CRC, Bad PID, etc.). 

   

         

   

Thanks,

   

Prajith

0 Likes
Anonymous
Not applicable

Hi,

   

  I also meet this problem recently.All the problem are the same.

   

   The usb controller is CY3014.

   

   Do you have any suggestion to solve this problem?

   

 

   

-Jesse

0 Likes
Anonymous
Not applicable


Print the USBD status to see why the XFERDATA() fails. For a list of different possible USBDSTATUS refer this

   

https://msdn.microsoft.com/en-us/library/windows/hardware/ff539136(v=vs.85).aspx

0 Likes