Files
bds.mr.devmgr/src.devmgr/dev/usb/mr.dev.usb.pipe0.pas
T
2026-01-03 18:53:14 +01:00

75 lines
2.1 KiB
ObjectPascal

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.