What is the host application which you are using?
AN61345 demostrates the data throughput using Streamer host application. And Streamer implementation is through asynchronous data requests. In case of asynchronous requests, the Bulk IN requests are queued so that when one In transfer is finished another request is already present.
This is not the case with synchronous request from the host.
Please go through the source of Streamer application. It will help you how to implement asynchronous requests in the host application.
You can even use Streamer with your present setup to check the data throughput Streamer can perform upto.
Thanks Nikhil, I will read the paper, I used bulk transfer and xferdata funcion in my project, I'm not clear about the asynchronous or synchronous data requests. Another I found that when a timeout reached and generate an error, later transfer can't be succeed anymore, in oder to guarantee successful transmission, I must set the timeout to infinite, and can use an abort function to stop transmission.
Hi, i met the same error as yours.
once the xferdata() return false, the subsequence call to xferdata() will no longer return true.
i tried delete CCyUSBDevice instance, generated a new one, opened same endpoints and call xferdata() again.
But the endpoint sames like be occupied so can not return data anymore.
my colleague catch the packet between Host and USB with a device.
he told me, since the false return, HOST will not send SOF to USB in the later calling of xferdata().
how do you solve this? just setting timeout infinite?