📄 usb.h
字号:
/*********************************************************************************************
* File: usb.h
* Author: Embest
* Desc: header file of s3c2410x's usb controller for main configuration
* definitions(USB data structure) for USB setup operation.
* Because It's h/w independent file, it may be used without any change in future.
* History:
* 1)Y.J.Guo, Reuse and modify the source of S3C2410X u24xmon, April 28, 2005
*********************************************************************************************/
#ifndef __USB_H__
#define __USB_H__
/*------------------------------------------------------------------------------------------*/
/* Macro defines forEndpoint 0 */
/*------------------------------------------------------------------------------------------*/
// Standard bmRequestTyje (Direction)
#define HOST_TO_DEVICE (0x00)
#define DEVICE_TO_HOST (0x80)
// Standard bmRequestType (Type)
#define STANDARD_TYPE (0x00)
#define CLASS_TYPE (0x20)
#define VENDOR_TYPE (0x40)
#define RESERVED_TYPE (0x60)
// Standard bmRequestType (Recipient)
#define DEVICE_RECIPIENT (0)
#define INTERFACE_RECIPIENT (1)
#define ENDPOINT_RECIPIENT (2)
#define OTHER_RECIPIENT (3)
// Feature Selectors
#define DEVICE_REMOTE_WAKEUP (1)
#define EP_STALL (0)
// Standard Request Codes
#define GET_STATUS (0)
#define CLEAR_FEATURE (1)
#define SET_FEATURE (3)
#define SET_ADDRESS (5)
#define GET_DESCRIPTOR (6)
#define SET_DESCRIPTOR (7)
#define GET_CONFIGURATION (8)
#define SET_CONFIGURATION (9)
#define GET_INTERFACE (10)
#define SET_INTERFACE (11)
#define SYNCH_FRAME (12)
// Class-specific Request Codes
#define GET_DEVICE_ID (0)
#define GET_PORT_STATUS (1)
#define SOFT_RESET (2)
// Descriptor Types
#define DEVICE_TYPE (1)
#define CONFIGURATION_TYPE (2)
#define STRING_TYPE (3)
#define INTERFACE_TYPE (4)
#define ENDPOINT_TYPE (5)
//configuration descriptor: bmAttributes
#define CONF_ATTR_DEFAULT (0x80) //Spec 1.0 it was BUSPOWERED bit.
#define CONF_ATTR_REMOTE_WAKEUP (0x20)
#define CONF_ATTR_SELFPOWERED (0x40)
//endpoint descriptor
#define EP_ADDR_IN (0x80)
#define EP_ADDR_OUT (0x00)
#define EP_ATTR_CONTROL (0x0)
#define EP_ATTR_ISOCHRONOUS (0x1)
#define EP_ATTR_BULK (0x2)
#define EP_ATTR_INTERRUPT (0x3)
//string descriptor
#define LANGID_US_L (0x09)
#define LANGID_US_H (0x04)
/*------------------------------------------------------------------------------------------*/
/* Struct defines forEndpoint 0 */
/*------------------------------------------------------------------------------------------*/
struct USB_SETUP_DATA{
UINT8T bmRequestType;
UINT8T bRequest;
UINT8T bValueL;
UINT8T bValueH;
UINT8T bIndexL;
UINT8T bIndexH;
UINT8T bLengthL;
UINT8T bLengthH;
};
struct USB_DEVICE_DESCRIPTOR{
UINT8T bLength;
UINT8T bDescriptorType;
UINT8T bcdUSBL;
UINT8T bcdUSBH;
UINT8T bDeviceClass;
UINT8T bDeviceSubClass;
UINT8T bDeviceProtocol;
UINT8T bMaxPacketSize0;
UINT8T idVendorL;
UINT8T idVendorH;
UINT8T idProductL;
UINT8T idProductH;
UINT8T bcdDeviceL;
UINT8T bcdDeviceH;
UINT8T iManufacturer;
UINT8T iProduct;
UINT8T iSerialNumber;
UINT8T bNumConfigurations;
};
struct USB_CONFIGURATION_DESCRIPTOR{
UINT8T bLength;
UINT8T bDescriptorType;
UINT8T wTotalLengthL;
UINT8T wTotalLengthH;
UINT8T bNumInterfaces;
UINT8T bConfigurationValue;
UINT8T iConfiguration;
UINT8T bmAttributes;
UINT8T maxPower;
};
struct USB_INTERFACE_DESCRIPTOR{
UINT8T bLength;
UINT8T bDescriptorType;
UINT8T bInterfaceNumber;
UINT8T bAlternateSetting;
UINT8T bNumEndpoints;
UINT8T bInterfaceClass;
UINT8T bInterfaceSubClass;
UINT8T bInterfaceProtocol;
UINT8T iInterface;
};
struct USB_ENDPOINT_DESCRIPTOR{
UINT8T bLength;
UINT8T bDescriptorType;
UINT8T bEndpointAddress;
UINT8T bmAttributes;
UINT8T wMaxPacketSizeL;
UINT8T wMaxPacketSizeH;
UINT8T bInterval;
};
#endif //__USB_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -