- host->HostDef->BulkIN(
- host->Ptr, Dev->Dev->Address*16 + op->Endpt->EndpointNum,
- 0, USB_AsyncCallback, op,
- DataBuf, Length
- );
+ for( size_t ofs = 0; ofs < Length; ofs += op->Endpt->MaxPacketSize )
+ {
+ size_t len = MIN(Length - ofs, op->Endpt->MaxPacketSize);
+
+ host->HostDef->BulkIN(
+ host->Ptr, Dev->Dev->Address*16 + op->Endpt->EndpointNum,
+ 0, (len == Length - ofs ? USB_AsyncCallback : NULL), op,
+ (char*)DataBuf + ofs, len
+ );
+ }