|
The more I think about it the less I understand how USB and CyUSB.NET works. (I'm brand new to USB, so please go easy).
I'm trying to have a device use BULK transfer to the PC. I imagine this is what's happening:
1. The device sends full or partial packets across the USB to the PC
2. On the PC side some FIFO buffer (call it PCbuf) gets slowly filled with the data.
3. XferData() is used to grab the data from PCbuf and transfer it to the application.
Is that what's happening? If so I have a question. How big is this PC side buffer PCbuf? And how does one know if it overflows? And how does the USB device know it can't send more data because the PCbuf is full?
Or do I have that all wrong? Is there in fact no PC side buffer at all. And whenever I execute XferData() a USB request is direclty dispatched to the device asking for a specific amount of data? That would actually make more sense I guess, because it would explain why there is no function to tell me how much data is availabe for pick-up. Because the PC simply doesn't know.
So the other question then becomes. Is it possible to tell XferData() to just give me all the data available in the buffer without any timout. Something like this:
XferLen = 512;
bResult = inEndpoint.XferData(ref inData, ref xferLen);
But I don't want to wait for timeout, just give me what you got available, but give it to me now.
Thank you for any helpful insight.
|