PORTS Forum
Ports and Interfaces => USB => Topic started by: ulao on July 06, 2018, 11:13:53 am
-
Correct me if I'm wrong but if I have say a game pad usb 1.1 usb device that the host asks for data from every 8 to 10 ms (interrupt in pipe) the host will be responsible for retrieving the data. That is to say an application must be asking for it?
When I watch a sniffer I see the data sent every 8ms. I have not tried this yet but I'm under the impressionist if I close the app that is using the device that data will no longer be asked for, thus freeing up the pipe of talk data?
The reason I ask is the control transfers must wait for nak before sending data. So when this interrupt data is going on it sits in naking for a bit. If I were to exit the application would interrupt data stop (I assume so). Thus allowing the control transfers to go a bit more smoothly. Of course the interrupt frames will still occur ever 1ms or so.
Do I have that about right?
-
The HID driver continuously requests data from interrupt IN endpoints regardless of whether an application is using the data.
-
Is there anything that would send a leave me a lone request. I think any type of reply other then the data format it wants causes the host to drop the client.
My implementation of usb has this
#define USB_CFG_HAVE_FLOWCONTROL 0
/* Define this to 1 if you want flowcontrol over USB data. See the definition
* of the macros usbDisableAllRequests() and usbEnableAllRequests() in
* usbdrv.h.
*/
#define usbDisableAllRequests() usbRxLen = -1
/* Must be called from usbFunctionWrite(). This macro disables all data input
* from the USB interface. Requests from the host are answered with a NAK
* while they are disabled.
*/
but I'd think this would also disable control transfers.
-
If the device is HID-class, it must work with the host's HID driver, which will poll the interrupt IN endpoint.