|  | /* | 
|  | * usb200.h | 
|  | * | 
|  | * This file is part of the ReactOS PSDK package. | 
|  | * | 
|  | * Contributors: | 
|  | *   Magnus Olsen. | 
|  | * | 
|  | * 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 | 
|  |  | 
|  | #include "usb100.h" | 
|  |  | 
|  | #include <pshpack1.h> | 
|  |  | 
|  | typedef enum _USB_DEVICE_TYPE { | 
|  | Usb11Device = 0, | 
|  | Usb20Device | 
|  | } USB_DEVICE_TYPE; | 
|  |  | 
|  | typedef enum _USB_DEVICE_SPEED { | 
|  | UsbLowSpeed = 0, | 
|  | UsbFullSpeed, | 
|  | UsbHighSpeed | 
|  | } USB_DEVICE_SPEED; | 
|  |  | 
|  | #define USB_PORT_STATUS_CONNECT                       0x0001 | 
|  | #define USB_PORT_STATUS_ENABLE                        0x0002 | 
|  | #define USB_PORT_STATUS_SUSPEND                       0x0004 | 
|  | #define USB_PORT_STATUS_OVER_CURRENT                  0x0008 | 
|  | #define USB_PORT_STATUS_RESET                         0x0010 | 
|  | #define USB_PORT_STATUS_POWER                         0x0100 | 
|  | #define USB_PORT_STATUS_LOW_SPEED                     0x0200 | 
|  | #define USB_PORT_STATUS_HIGH_SPEED                    0x0400 | 
|  |  | 
|  |  | 
|  | typedef union _BM_REQUEST_TYPE { | 
|  | struct _BM { | 
|  | UCHAR Recipient:2; | 
|  | UCHAR Reserved:3; | 
|  | UCHAR Type:2; | 
|  | UCHAR Dir:1; | 
|  | } _BM; | 
|  | UCHAR B; | 
|  | } BM_REQUEST_TYPE, *PBM_REQUEST_TYPE; | 
|  |  | 
|  | typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET { | 
|  | BM_REQUEST_TYPE bmRequestType; | 
|  | UCHAR bRequest; | 
|  | union _wValue { | 
|  | __C89_NAMELESS struct { | 
|  | UCHAR LowByte; | 
|  | UCHAR HiByte; | 
|  | }; | 
|  | USHORT W; | 
|  | } wValue; | 
|  | union _wIndex { | 
|  | __C89_NAMELESS struct { | 
|  | UCHAR LowByte; | 
|  | UCHAR HiByte; | 
|  | }; | 
|  | USHORT W; | 
|  | } wIndex; | 
|  | USHORT wLength; | 
|  | } USB_DEFAULT_PIPE_SETUP_PACKET, *PUSB_DEFAULT_PIPE_SETUP_PACKET; | 
|  |  | 
|  | C_ASSERT(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) == 8); | 
|  |  | 
|  | #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE          0x06 | 
|  | #define USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07 | 
|  |  | 
|  | typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { | 
|  | UCHAR bLength; | 
|  | UCHAR bDescriptorType; | 
|  | USHORT bcdUSB; | 
|  | UCHAR bDeviceClass; | 
|  | UCHAR bDeviceSubClass; | 
|  | UCHAR bDeviceProtocol; | 
|  | UCHAR bMaxPacketSize0; | 
|  | UCHAR bNumConfigurations; | 
|  | UCHAR bReserved; | 
|  | } USB_DEVICE_QUALIFIER_DESCRIPTOR, *PUSB_DEVICE_QUALIFIER_DESCRIPTOR; | 
|  |  | 
|  | typedef union _USB_HIGH_SPEED_MAXPACKET { | 
|  | struct _MP { | 
|  | USHORT MaxPacket:11; | 
|  | USHORT HSmux:2; | 
|  | USHORT Reserved:3; | 
|  | } _MP; | 
|  | USHORT us; | 
|  | } USB_HIGH_SPEED_MAXPACKET, *PUSB_HIGH_SPEED_MAXPACKET; | 
|  |  | 
|  | #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE     0x0B | 
|  |  | 
|  | typedef struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR { | 
|  | UCHAR bLength; | 
|  | UCHAR bDescriptorType; | 
|  | UCHAR bFirstInterface; | 
|  | UCHAR bInterfaceCount; | 
|  | UCHAR bFunctionClass; | 
|  | UCHAR bFunctionSubClass; | 
|  | UCHAR bFunctionProtocol; | 
|  | UCHAR iFunction; | 
|  | } USB_INTERFACE_ASSOCIATION_DESCRIPTOR, *PUSB_INTERFACE_ASSOCIATION_DESCRIPTOR; | 
|  |  | 
|  | #include <poppack.h> | 
|  |  |