Initial check in
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user