/* * 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 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