| /* |
| * usb100.h |
| * |
| * USB 1.0 support |
| * |
| * This file is part of the ReactOS PSDK package. |
| * |
| * Contributors: |
| * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #pragma once |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <pshpack1.h> |
| |
| #define BMREQUEST_HOST_TO_DEVICE 0 |
| #define BMREQUEST_DEVICE_TO_HOST 1 |
| |
| #define BMREQUEST_STANDARD 0 |
| #define BMREQUEST_CLASS 1 |
| #define BMREQUEST_VENDOR 2 |
| |
| #define BMREQUEST_TO_DEVICE 0 |
| #define BMREQUEST_TO_INTERFACE 1 |
| #define BMREQUEST_TO_ENDPOINT 2 |
| #define BMREQUEST_TO_OTHER 3 |
| |
| #define MAXIMUM_USB_STRING_LENGTH 255 |
| |
| #define USB_GETSTATUS_SELF_POWERED 0x01 |
| #define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02 |
| |
| /* USB_COMMON_DESCRIPTOR.bDescriptorType constants */ |
| #define USB_DEVICE_DESCRIPTOR_TYPE 0x01 |
| #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 |
| #define USB_STRING_DESCRIPTOR_TYPE 0x03 |
| #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 |
| #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 |
| #define USB_RESERVED_DESCRIPTOR_TYPE 0x06 |
| #define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07 |
| #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08 |
| |
| #define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i)) |
| |
| /* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */ |
| #define USB_ENDPOINT_TYPE_MASK 0x03 |
| #define USB_ENDPOINT_TYPE_CONTROL 0x00 |
| #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 |
| #define USB_ENDPOINT_TYPE_BULK 0x02 |
| #define USB_ENDPOINT_TYPE_INTERRUPT 0x03 |
| |
| /* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */ |
| #define USB_CONFIG_POWERED_MASK 0xc0 |
| #define USB_CONFIG_BUS_POWERED 0x80 |
| #define USB_CONFIG_SELF_POWERED 0x40 |
| #define USB_CONFIG_REMOTE_WAKEUP 0x20 |
| |
| #define USB_ENDPOINT_DIRECTION_MASK 0x80 |
| |
| #define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK)) |
| #define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK) |
| |
| #define USB_REQUEST_GET_STATUS 0x00 |
| #define USB_REQUEST_CLEAR_FEATURE 0x01 |
| #define USB_REQUEST_SET_FEATURE 0x03 |
| #define USB_REQUEST_SET_ADDRESS 0x05 |
| #define USB_REQUEST_GET_DESCRIPTOR 0x06 |
| #define USB_REQUEST_SET_DESCRIPTOR 0x07 |
| #define USB_REQUEST_GET_CONFIGURATION 0x08 |
| #define USB_REQUEST_SET_CONFIGURATION 0x09 |
| #define USB_REQUEST_GET_INTERFACE 0x0A |
| #define USB_REQUEST_SET_INTERFACE 0x0B |
| #define USB_REQUEST_SYNC_FRAME 0x0C |
| |
| #define USB_DEVICE_CLASS_RESERVED 0x00 |
| #define USB_DEVICE_CLASS_AUDIO 0x01 |
| #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 |
| #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 |
| #define USB_DEVICE_CLASS_MONITOR 0x04 |
| #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 |
| #define USB_DEVICE_CLASS_POWER 0x06 |
| #define USB_DEVICE_CLASS_PRINTER 0x07 |
| #define USB_DEVICE_CLASS_STORAGE 0x08 |
| #define USB_DEVICE_CLASS_HUB 0x09 |
| #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF |
| |
| #define USB_FEATURE_ENDPOINT_STALL 0x0000 |
| #define USB_FEATURE_REMOTE_WAKEUP 0x0001 |
| |
| #define USB_FEATURE_INTERFACE_POWER_D0 0x0002 |
| #define USB_FEATURE_INTERFACE_POWER_D1 0x0003 |
| #define USB_FEATURE_INTERFACE_POWER_D2 0x0004 |
| #define USB_FEATURE_INTERFACE_POWER_D3 0x0005 |
| |
| typedef struct _USB_DEVICE_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| USHORT bcdUSB; |
| UCHAR bDeviceClass; |
| UCHAR bDeviceSubClass; |
| UCHAR bDeviceProtocol; |
| UCHAR bMaxPacketSize0; |
| USHORT idVendor; |
| USHORT idProduct; |
| USHORT bcdDevice; |
| UCHAR iManufacturer; |
| UCHAR iProduct; |
| UCHAR iSerialNumber; |
| UCHAR bNumConfigurations; |
| } USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; |
| |
| typedef struct _USB_ENDPOINT_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| UCHAR bEndpointAddress; |
| UCHAR bmAttributes; |
| USHORT wMaxPacketSize; |
| UCHAR bInterval; |
| } USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR; |
| |
| typedef struct _USB_CONFIGURATION_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| USHORT wTotalLength; |
| UCHAR bNumInterfaces; |
| UCHAR bConfigurationValue; |
| UCHAR iConfiguration; |
| UCHAR bmAttributes; |
| UCHAR MaxPower; |
| } USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; |
| |
| typedef struct _USB_INTERFACE_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| UCHAR bInterfaceNumber; |
| UCHAR bAlternateSetting; |
| UCHAR bNumEndpoints; |
| UCHAR bInterfaceClass; |
| UCHAR bInterfaceSubClass; |
| UCHAR bInterfaceProtocol; |
| UCHAR iInterface; |
| } USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; |
| |
| typedef struct _USB_STRING_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| WCHAR bString[1]; |
| } USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR; |
| |
| typedef struct _USB_COMMON_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| } USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR; |
| |
| typedef struct _USB_HUB_DESCRIPTOR { |
| UCHAR bDescriptorLength; |
| UCHAR bDescriptorType; |
| UCHAR bNumberOfPorts; |
| USHORT wHubCharacteristics; |
| UCHAR bPowerOnToPowerGood; |
| UCHAR bHubControlCurrent; |
| UCHAR bRemoveAndPowerMask[64]; |
| } USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; |
| |
| #define USB_SUPPORT_D0_COMMAND 0x01 |
| #define USB_SUPPORT_D1_COMMAND 0x02 |
| #define USB_SUPPORT_D2_COMMAND 0x04 |
| #define USB_SUPPORT_D3_COMMAND 0x08 |
| |
| #define USB_SUPPORT_D1_WAKEUP 0x10 |
| #define USB_SUPPORT_D2_WAKEUP 0x20 |
| |
| typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| UCHAR SelfPowerConsumedD0[3]; |
| UCHAR bPowerSummaryId; |
| UCHAR bBusPowerSavingD1; |
| UCHAR bSelfPowerSavingD1; |
| UCHAR bBusPowerSavingD2; |
| UCHAR bSelfPowerSavingD2; |
| UCHAR bBusPowerSavingD3; |
| UCHAR bSelfPowerSavingD3; |
| USHORT TransitionTimeFromD1; |
| USHORT TransitionTimeFromD2; |
| USHORT TransitionTimeFromD3; |
| } USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR; |
| |
| typedef struct _USB_INTERFACE_POWER_DESCRIPTOR { |
| UCHAR bLength; |
| UCHAR bDescriptorType; |
| UCHAR bmCapabilitiesFlags; |
| UCHAR bBusPowerSavingD1; |
| UCHAR bSelfPowerSavingD1; |
| UCHAR bBusPowerSavingD2; |
| UCHAR bSelfPowerSavingD2; |
| UCHAR bBusPowerSavingD3; |
| UCHAR bSelfPowerSavingD3; |
| USHORT TransitionTimeFromD1; |
| USHORT TransitionTimeFromD2; |
| USHORT TransitionTimeFromD3; |
| } USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR; |
| |
| #include <poppack.h> |
| |
| #ifdef __cplusplus |
| } |
| #endif |