Initial check in
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
unit mr.drv.usb.types;
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
// Standard request codes (btw not used)
|
||||
CTRL_GET_STATUS = 0;
|
||||
CTRL_CLEAR_FEATURE = 1;
|
||||
CTRL_SET_FEATURE = 3;
|
||||
CTRL_SET_ADDRESS = 5;
|
||||
CTRL_GET_DESCRIPTOR = 6;
|
||||
CTRL_SET_DESCRIPTOR = 7;
|
||||
CTRL_GET_CONFIGURATION = 8;
|
||||
CTRL_SET_CONFIGURATION = 9;
|
||||
CTRL_GET_INTERFACE = 10;
|
||||
CTRL_SET_INTERFACE = 11;
|
||||
|
||||
// Descriptor types
|
||||
DSCR_DEVICE = 1;
|
||||
DSCR_CONFIGURATION = 2;
|
||||
DSCR_STRING = 3;
|
||||
DSCR_INTERFACE = 4;
|
||||
DSCR_ENDPOINT = 5;
|
||||
DSCR_DEVICE_QUALIFIER = 6;
|
||||
DSCR_OTHER_SPEED_CONF = 7;
|
||||
DSCR_INTERFACE_POWER = 8;
|
||||
|
||||
|
||||
type
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB Device Descriptor
|
||||
// -----------------------------------------------------------------------------------
|
||||
PUsbDeviceDescriptor = ^TUsbDeviceDescriptor;
|
||||
TUsbDeviceDescriptor = packed record
|
||||
Length : byte; // UCHAR bLength
|
||||
DescriptorType : byte; // UCHAR bDescriptorType
|
||||
bcdUSB : word; // USHORT bcdUSB
|
||||
DeviceClass : byte; // UCHAR bDeviceClass
|
||||
DeviceSubClass : byte; // UCHAR bDeviceSubClass
|
||||
DeviceProtocol : byte; // UCHAR bDeviceProtocol
|
||||
MaxPacketSize0 : byte; // UCHAR bMaxOacketSize0
|
||||
VendorID : word; // USHORT idVendor
|
||||
ProductID : word; // USHORT idProduct
|
||||
DeviceID : word; // USHORT bcdDevice
|
||||
Manufacturer : byte; // UCHAR iManufacturer
|
||||
Product : byte; // UCHAR iProduct
|
||||
SerialNumber : byte; // UCHAR iSerialNumber
|
||||
ConfigurationCount : byte; // UCHAR bNumConfigurations
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB Configuration Descriptor
|
||||
// -----------------------------------------------------------------------------------
|
||||
PUsbConfigurationDescriptor = ^TUsbConfigurationDescriptor;
|
||||
TUsbConfigurationDescriptor = packed record
|
||||
Length : byte; // UCHAR bLength
|
||||
DescriptorType : byte; // UCHAR bDescriptorType
|
||||
TotalLength : word; // USHORT wTotalLength
|
||||
InterfaceCount : byte; // UCHAR bNumInterfaces
|
||||
ConfigurationNumber : byte; // UCHAR Configuration Number
|
||||
ConfigurationString : byte; // UCHAR Configuration String
|
||||
Attributes : byte; // UCHAR bmAttributes
|
||||
MaxPower : byte; // UCHAR MaxPower
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB Interface Descriptor
|
||||
// -----------------------------------------------------------------------------------
|
||||
PUsbAlternateSettingDescriptor = ^TUsbAlternateSettingDescriptor;
|
||||
TUsbAlternateSettingDescriptor = packed record
|
||||
Length : byte; // UCHAR bLength
|
||||
DescriptorType : byte; // UCHAR bDescriptorType
|
||||
InterfaceNumber : byte; // UCHAR bInterfaceNumber
|
||||
AlternateSetting : byte; // UCHAR bAlternateSetting
|
||||
EndpointCount : byte; // UCHAR bNumEndPoints
|
||||
InterfaceClass : byte; // UCHAR bInterfaceClass
|
||||
InterfaceSubClass : byte; // UCHAR bInterfaceSubClass
|
||||
InterfaceProtocol : byte; // UCHAR bInterfaceProtocol
|
||||
InterfaceIndex : byte; // UCHAR iInterface
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB Endpoint Descriptor
|
||||
// -----------------------------------------------------------------------------------
|
||||
PUsbEndpointDescriptor = ^TUsbEndpointDescriptor;
|
||||
TUsbEndpointDescriptor = packed record
|
||||
Length : byte; // UCHAR bLength
|
||||
DescriptorType : byte; // UCHAR bDescriptorType
|
||||
EndpointAddress : byte; // UCHAR bEndpointAddress
|
||||
Attributes : byte; // UCHAR bmAttributes
|
||||
MaxPacketSize : word; // USHORT wMaxPacketSize
|
||||
Interval : byte; // UCHAR bInterval
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB String Descriptor
|
||||
// -----------------------------------------------------------------------------------
|
||||
PUsbStringDescriptor = ^TUsbStringDescriptor;
|
||||
TUsbStringDescriptor = packed record
|
||||
Length : byte; // UCHAR bLength
|
||||
DescriptorType : byte; // UCHAR bDescriptorType
|
||||
Str : array of WideChar; // WCHAR String[1]
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// USB Transfer Size Info
|
||||
// -----------------------------------------------------------------------------------
|
||||
PusbTransferSizeInfo = ^TusbTransferSizeInfo;
|
||||
TusbTransferSizeInfo = packed record
|
||||
EndpointAddress : byte;
|
||||
TransferSize : cardinal;
|
||||
end;
|
||||
|
||||
{$Z4}
|
||||
TUsbDeviceSpeed = (LowSpeed, FullSpeed, HighSpeed);
|
||||
TUsbPipeType = (ptControl, ptIsochronous, ptBulk, ptInterrupt);
|
||||
{$Z1}
|
||||
|
||||
// Ez nekem nem teljesen vilagos itt. usb.h ???
|
||||
PUsbPipeInformation = ^TUsbPipeInformation;
|
||||
TUsbPipeInformation = record
|
||||
PipeType : TUsbPipeType;
|
||||
PipeId : byte;
|
||||
MaxPacketSize : word;
|
||||
Interval : byte;
|
||||
end;
|
||||
|
||||
PUsbSetupPacket = ^TUsbSetupPacket;
|
||||
TUsbSetupPacket = packed record
|
||||
RequestType : byte;
|
||||
case Request : byte of
|
||||
0: (
|
||||
Value : word;
|
||||
Index : word;
|
||||
Length : word;
|
||||
);
|
||||
|
||||
1: (
|
||||
SetupDat : array [2..7] of byte;
|
||||
);
|
||||
end;
|
||||
|
||||
|
||||
type
|
||||
IUsbDriver = interface
|
||||
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user