+ tUSBHost *host;
+ tUSBEndpoint *ep;
+ ENTER("pDev iEndpoint iLength pData", Dev, Endpoint, Length, Data);
+
+ ep = &Dev->Endpoints[Endpoint-1];
+ host = Dev->Dev->Host;
+
+ if( Length > ep->MaxPacketSize ) {
+ Log_Warning("USB", "Max packet size exceeded (%i > %i)", ep->MaxPacketSize);
+ LEAVE('-');
+ }
+
+ Threads_ClearEvent(THREAD_EVENT_SHORTWAIT);
+ host->HostDef->BulkOUT(
+ host->Ptr, Dev->Dev->Address*16 + Dev->Endpoints[Endpoint-1].EndpointNum,
+ 0, USB_WakeCallback, Proc_GetCurThread(),
+ (void*)Data, Length
+ );
+ Threads_WaitEvents(THREAD_EVENT_SHORTWAIT);
+
+ LEAVE('-');