⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb100.h

📁 此為philip 1362 USB DOS下的驅動程式包, 已經共測試並內含有說明文件
💻 H
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2000 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	USB200.H
   // Author:		ZhenYu Zhang
   // Created:      Jun. 8, 2000
   // Contact: 	    hilbert.zhang@philips.com
   // Modified:
   // Revision:		0.0
   //
   //*************************************************************************
   // Abstract:
   //
 //*************************************************************************
*/
#ifndef   __USB200_H__
#define   __USB200_H__

#include "common.h"

#define MAXIMUM_USB_STRING_LENGTH 255

// masks
#define USB_RECIPIENT            (UCHAR)0x1F
#define USB_RECIPIENT_DEVICE     (UCHAR)0x00
#define USB_RECIPIENT_INTERFACE  (UCHAR)0x01
#define USB_RECIPIENT_ENDPOINT   (UCHAR)0x02

#define USB_REQUEST_DIR_MASK     (UCHAR)0x80
#define USB_REQUEST_MASK         (UCHAR)0xFF
#define DEVICE_ADDRESS_MASK      0x7F

// values for the bits returned by the USB GET_STATUS command

#define USB_GETSTATUS_SELF_POWERED                0x01
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED       0x02


#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_POWER_DESCRIPTOR_TYPE                 0x06

#define USB_OTG_DESCRIPTOR_TYPE                   0x09	//change from 0x0A on nov-12-01

#define STR_INDEX_LANGUAGE						  0x00
#define STR_INDEX_MANUFACTURER					  0x01
#define STR_INDEX_PRODUCT						  0x02
#define STR_INDEX_SERIALNUMBER					  0x03
#define STR_INDEX_CONFIGURATION					  0x04
#define STR_INDEX_INTERFACE						  0x05

#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d<<8 | i))

//
// Values for bmAttributes field of an
// endpoint descriptor
//

#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


//
// definitions for bits in the bmAttributes field of a
// configuration descriptor.
//
#define USB_CONFIG_POWERED_MASK                   0xc0

#define USB_CONFIG_BUS_POWERED                    0x80
#define USB_CONFIG_SELF_POWERED                   0x40
#define USB_CONFIG_REMOTE_WAKEUP                  0x20

//
// Endpoint direction bit, stored in address
//

#define USB_ENDPOINT_DIRECTION_MASK               0x80
#define USBXFER_DIR_OUT                           0x00
#define USBXFER_DIR_IN                            0x80

#define USB_REQUEST_TYPE_MASK              	  	0x60
#define USBXFER_STD   		                 	0x00
#define USBXFER_CLASS                           0x20
#define USBXFER_VENDOR                          0x40
#define USBXFER_RESERV                          0x60
#define USB_STANDARD_REQUEST                    USBXFER_STD
#define USB_CLASS_REQUEST                    	USBXFER_CLASS
#define USB_VENDOR_REQUEST                    	USBXFER_VENDOR

#define USB_ENDPOINT_RECIPIENT_MASK            	0x1F
#define USBXFER_DEV   		                    0x00
#define USBXFER_IF                             	0x01
#define USBXFER_ENDP                            0x02

// test direction bit in the bEndpointAddress field of
// an endpoint descriptor.
#define USB_ENDPOINT_DIRECTION_OUT(addr)          (!((addr) & USB_ENDPOINT_DIRECTION_MASK))
#define USB_ENDPOINT_DIRECTION_IN(addr)           ((addr) & USB_ENDPOINT_DIRECTION_MASK)

//
// USB defined request codes
// see chapter 9 of the USB 1.0 specifcation for
// more information.
//

// These are the correct values based on the USB 1.0
// specification

#define USB_REQUEST_GET_STATUS                    0x00
#define USB_REQUEST_CLEAR_FEATURE                 0x01
//#define USB_REQUEST_GET_STATE					  0x02
#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


//
// defined USB device classes
//

#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

//USB_DEVICE_CLASS_STORAGE
#define USB_SUBCLASS_CODE_RBC			                    0x01
#define USB_SUBCLASS_CODE_SFF8020I			                0x02
#define USB_SUBCLASS_CODE_QIC157			                0x03
#define USB_SUBCLASS_CODE_UFI			                    0x04
#define USB_SUBCLASS_CODE_SFF8070I			                0x05
#define USB_SUBCLASS_CODE_SCSI			                    0x06

#define USB_PROTOCOL_CODE_CBI0								0x00
#define USB_PROTOCOL_CODE_CBI1								0x01
#define USB_PROTOCOL_CODE_BULK								0x50

/* GetStatus */
#define DEVSTS_SELFPOWERED       0x01
#define DEVSTS_REMOTEWAKEUP      0x02

#define ENDPSTS_HALT             0x01

//
// USB defined Feature selectors
//

enum _USB_FEATURE {
USB_FEATURE_ENDPOINT_STALL = 0x0000,
USB_FEATURE_REMOTE_WAKEUP,
USB_FEATURE_TEST,
USB_FEATURE_B_HNP_ENABLE,
USB_FEATURE_A_HNP_SUPPORT,
USB_FEATURE_A_ALT_HNP_SUPPORT
};

typedef struct _USB_request{
	UCHAR bmRequestType;
	UCHAR bRequest;
	USHORT wValue;
	USHORT wIndex;
	USHORT wLength;
} USB_REQUEST;

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_OTG_DESCRIPTOR {
	UCHAR bLength;          //	0x03
	UCHAR bDescriptorType; 	//	0x0A
	UCHAR bmAttribute;
} USB_OTG_DESCRIPTOR, *PUSB_OTG_DESCRIPTOR;
//
// values for bmAttributes Field in
// USB_CONFIGURATION_DESCRIPTOR
//

#define BUS_POWERED                           0x80
#define SELF_POWERED                          0x40
#define REMOTE_WAKEUP                         0x20

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;
	UCHAR bString[];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;

//
// USB power descriptor added to core specification
//

#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_POWER_DESCRIPTOR {
    UCHAR bLength;
	UCHAR bDescriptorType;
	UCHAR bCapabilitiesFlags;
    USHORT EventNotification;
	USHORT D1LatencyTime;
    USHORT D2LatencyTime;
    USHORT D3LatencyTime;
    UCHAR PowerUnit;
	USHORT D0PowerConsumption;
	USHORT D1PowerConsumption;
    USHORT D2PowerConsumption;
} USB_POWER_DESCRIPTOR, *PUSB_POWER_DESCRIPTOR;


typedef struct _USB_COMMON_DESCRIPTOR {
	UCHAR bLength;
	UCHAR bDescriptorType;
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;


//
// Standard USB HUB definitions 
//
// See Chapter 11
//

typedef struct _USB_HUB_DESCRIPTOR {
	UCHAR        bDescriptorLength;      // Length of this descriptor
	UCHAR        bDescriptorType;        // Hub configuration type
	UCHAR        bNumberOfPorts;         // number of ports on this hub
	USHORT       wHubCharacteristics;    // Hub Charateristics
	UCHAR        bPowerOnToPowerGood;    // port power on till power good in 2ms
	UCHAR        bHubControlCurrent;     // max current in mA
	//
	// room for 255 ports power control and removable bitmask
	UCHAR        bRemoveAndPowerMask[64];
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;

#if 0
typedef struct _USB_STRING_CONFIGURATION_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Configuration[16];
} USB_STRING_CONFIGURATION_DESCRIPTOR,*PUSB_STRING_CONFIGURATION_DESCRIPTOR;

typedef struct _USB_STRING_LANGUAGE_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	USHORT ulanguageID[];
} USB_STRING_LANGUAGE_DESCRIPTOR,*PUSB_STRING_LANGUAGE_DESCRIPTOR;

typedef struct _USB_STRING_INTERFACE_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Interface[];
} USB_STRING_INTERFACE_DESCRIPTOR,*PUSB_STRING_INTERFACE_DESCRIPTOR;

typedef struct _USB_STRING_SERIALNUMBER_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  SerialNum[];
} USB_STRING_SERIALNUMBER_DESCRIPTOR,*PUSB_STRING_SERIALNUMBER_DESCRIPTOR;

typedef struct _USB_STRING_PRODUCT_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Product[];
} USB_STRING_PRODUCT_DESCRIPTOR,*PUSB_STRING_PRODUCT_DESCRIPTOR;

typedef struct _USB_STRING_MANUFACTURER_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Manufacturer[];
} USB_STRING_MANUFACTURER_DESCRIPTOR,*PUSB_STRING_MANUFACTURER_DESCRIPTOR;
#else
typedef struct _USB_STRING_LANGUAGE_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	USHORT ulanguageID;
} USB_STRING_LANGUAGE_DESCRIPTOR,* PUSB_STRING_LANGUAGE_DESCRIPTOR;

typedef struct _USB_STRING_INTERFACE_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Interface[22];
} USB_STRING_INTERFACE_DESCRIPTOR,* PUSB_STRING_INTERFACE_DESCRIPTOR;

typedef struct _USB_STRING_CONFIGURATION_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Configuration[16];
} USB_STRING_CONFIGURATION_DESCRIPTOR,* PUSB_STRING_CONFIGURATION_DESCRIPTOR;

typedef struct _USB_STRING_SERIALNUMBER_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  SerialNum[24];
} USB_STRING_SERIALNUMBER_DESCRIPTOR,* PUSB_STRING_SERIALNUMBER_DESCRIPTOR;

typedef struct _USB_STRING_PRODUCT_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Product[64];
} USB_STRING_PRODUCT_DESCRIPTOR,* PUSB_STRING_PRODUCT_DESCRIPTOR;

typedef struct _USB_STRING_MANUFACTURER_DESCRIPTOR {
	UCHAR  bLength;
	UCHAR  bDescriptorType;
	UCHAR  Manufacturer[54];
} USB_STRING_MANUFACTURER_DESCRIPTOR,* PUSB_STRING_MANUFACTURER_DESCRIPTOR;
#endif

#endif   /* __USB100_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -