unit mr.dev.usb.pipe0; interface uses mr.drv.usb, mr.drv.usb.types, mr.dev.usb.pipebase; const bmDirIn = $80; // bit 7: data transfer direction bmDirOut = $00; bmTypeStandrad = $00; // bit 6..5: data transfer type bmTypeClass = $20; bmTypeVendor = $40; bmRecDevice = $00; // bit 4..0: Recipient bmRecInterface = $01; bmRecEndpoint = $02; bmRecOther = $03; type TPipe0 = class( TPipeBase) public function Transfer( RequestType : byte; Request : byte; Value : word; Index : word; Length : word; Buffer : pointer; BufferLength: cardinal; var Transferred : cardinal; Overlapped : pointer=nil): boolean; end; TPipe0Class = class of TPipe0; implementation { TPipe0 } // ================================================================================================ // Transfer // ================================================================================================ function TPipe0.Transfer( RequestType : byte; Request : byte; Value : word; Index : word; Length : word; Buffer : pointer; BufferLength: cardinal; var Transferred : cardinal; Overlapped : pointer): boolean; var sud: TUsbSetupPacket; begin result := false; if Assigned( fDriver) then begin sud.RequestType := RequestType; sud.Request := Request; sud.Value := Value; sud.Index := Index; sud.Length := Length; result := fDriver.ControlTransfer( sud, Buffer, BufferLength, Transferred, Overlapped) end end; end.