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

📄 usb200.h

📁 PDIUSBD12的嵌入式软件
💻 H
字号:
/*
*   usb200.h
*
*   Definitions conforming to the USB 2.0 specification.
*
*   Adapted from Philips PDIUSBD12 firmware library - USB1.1 (USB100.H)
*   Revised for USB 2.0 compliance -- MJB Nov 2005
*/

#ifndef   __USB200_H__
#define   __USB200_H__


#define MAXIMUM_USB_STRING_LENGTH 255

/* 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_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 field, also wIndex of SET/CLEAR_FEATURE */
#define USB_ENDPOINT_DIRECTION_MASK               0x80

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

/* Bitmasks and defined values for bRequestType field of Setup pkt */
#define USB_RECIPIENT_MASK       (uchar)0x1F
#define USB_RECIPIENT_DEVICE     (uchar)0x00
#define USB_RECIPIENT_INTERFACE  (uchar)0x01
#define USB_RECIPIENT_ENDPOINT   (uchar)0x02

#define USB_REQUEST_TYPE_MASK    (uchar)0x60
#define USB_STANDARD_REQUEST     (uchar)0x00
#define USB_CLASS_REQUEST        (uchar)0x20
#define USB_VENDOR_REQUEST       (uchar)0x40

#define DEVICE_ADDRESS_MASK      0x7F

/* USB defined request codes */
/* see chapter 9 of the USB 2.0 specifcation for more information. */
/* These are the correct values based on the USB 2.0 specification */
#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

/* 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_TMC                0xFE
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF

/* USB 2.0 defined Feature Selectors (wValue in Set_Feature setup pkt) */
#define USB_FEATURE_ENDPOINT_HALT           0x0000
#define USB_FEATURE_REMOTE_WAKEUP           0x0001
#define USB_FEATURE_TEST_MODE               0x0002


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;

/* 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[1];
} 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;


#endif   /* __USB200_H__ */

⌨️ 快捷键说明

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