void USBDeferINDataStage();
Before calling USBDeferINDataStage(), the firmware should first verify that the control transfer has a data stage, and that it is of type device-to-host (IN).
Section 9.2.6 of the official USB 2.0 specifications indicates that the USB device must return the first IN data packet within 500ms of the start of the control transfer. In order to meet this specification, the firmware must call USBEP0SendRAMPtr() or USBEP0SendROMPtr(), and then call USBCtrlEPAllowDataStage(), in less than 500ms from the start of the control transfer.
If the firmware calls USBDeferINDataStage(), it must eventually call USBEP0SendRAMPtr() or USBEP0SendROMPtr(), and then call USBCtrlEPAllowDataStage(). If it does not do this, the control transfer will never be able to complete.
The firmware should never call both USBDeferINDataStage() and USBDeferOUTDataStage() during the same control transfer. These functions are mutually exclusive (a control transfer with data stage can never contain both IN and OUT data packets during the data stage).
MLA - USB Library Help Version : 2.16
![]() |