📄 usb.h
字号:
/* `=========================================================================`
***************************************
**** * * ****
Title: USB
File name: USB.H
Project name: USB
**** ****
****************** * ******************
**** ****
Author: Petr PFEIFER
MPG Prague, Czech Republic
**** * * ****
***************************************
$Version: 0.005a Build: April 30, 2004
$Version: 0.005 Build: 2004-02-24,20:44:09
Description:
============
USB structures and constants.
Based on USB demo version 1.0.7, updated.
Since v.0.005 DT_HID_PHYSICALD added
Notes:
======
-none
..........................
. .
. ****************** .
. **PPPPPPPPPPPPPPPP .
. *PPPP*******PP**** .
. **PPP********PP*** .
. ***PPP******PP**** .
. *****PPP****PP**** .
. *****PPP****PP**** .
. PPPPPPPP****PP**** R .
. .
..........................
=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Copyright 2003 ST Microelectronics
This code/file is provided as is and has no warranty,
implied or otherwise. You are free to use/modify any of the provided
code at your own risk in your applications with the expressed limitation
of liability (see below) so long as your product using the code
contains at least one uPSD products (device).
LIMITATION OF LIABILITY:
========================
NEITHER STMicroelectronics NOR ITS VENDORS OR AGENTS
SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=
For current information on uPSD products,
please consult our pages on the World Wide Web:
www.st.com/psm
- - - - - - - - - - - -
STMicroelectronics GROUP OF COMPANIES
Australia - Brazil - China - Czech Republic - Finland - France - Germany
Hong Kong - India - Italy - Japan - Malaysia - Malta - Morocco - Singapore
Spain - Sweden - Switzerland - United Kingdom - U.S.A.
http://www.st.com
`========================================================================` */
#ifndef USB_H
#define USB_H
// iword - Intel word structure.
typedef struct
{
uchar lo;
uchar hi;
}
iword;
// USB 1.1 device descriptor
typedef struct
{
uchar bLength; // Size of this Descriptor in Bytes
uchar bDescriptorType; // Descriptor Type (=1)
iword bcdUSB; // USB Spec Release Number in BCD
uchar bDeviceClass; // Device Class Code
uchar bDeviceSubClass; // Device Subclass Code
uchar bDeviceProtocol; // Device Protocol Code
uchar bMaxPacketSize0; // Maximum Packet Size for EP0
iword idVendor; // Vendor ID
iword idProduct; // Product ID
iword bcdDevice; // Device Release Number in BCD
uchar iManufacturer; // Index of String Desc for Manufacturer
uchar iProduct; // Index of String Desc for Product
uchar iSerialNumber; // Index of String Desc for SerNo
uchar bNumConfigurations; // Number of possible Configurations
}
device_descriptor;
// USB 1.1 configuration descriptor
typedef struct
{
uchar bLength; // Size of this Descriptor in Bytes
uchar bDescriptorType; // Descriptor Type (=2)
iword wTotalLength; // Total Length of Data for this Conf
uchar bNumInterfaces; // No of Interfaces supported by this Conf
uchar bConfigurationValue; // Designator Value for *this* Configuration
uchar iConfiguration; // Index of String Desc for this Conf
uchar bmAttributes; // Configuration Characteristics (see below)
uchar bMaxPower; // Max. Power Consumption in this Conf (*2mA)
}
configuration_descriptor;
// USB 1.1 interface descriptor
typedef struct
{
uchar bLength; // Size of this Descriptor in Bytes
uchar bDescriptorType; // Descriptor Type (=4)
uchar bInterfaceNumber; // Number of *this* Interface (0..)
uchar bAlternateSetting; // Alternative for this Interface (if any)
uchar bNumEndpoints; // No of EPs used by this IF (excl. EP0)
uchar bInterfaceClass; // Interface Class Code
uchar bInterfaceSubClass; // Interface Subclass Code
uchar bInterfaceProtocol; // Interface Protocol Code
uchar iInterface; // Index of String Desc for this Interface
}
interface_descriptor;
// USB 1.1 endpoint descriptor
typedef struct
{
uchar bLength; // Size of this Descriptor in Bytes
uchar bDescriptorType; // Descriptor Type (=5)
uchar bEndpointAddress; // Endpoint Address (Number + Direction)
uchar bmAttributes; // Endpoint Attributes (Transfer Type)
iword wMaxPacketSize; // Max. Endpoint Packet Size
uchar bInterval; // Polling Interval (Interrupt) in ms
}
endpoint_descriptor;
// USB SETUP packet
typedef struct
{
uchar bmRequestType; // Characteristics (Direction,Type,Recipient)
uchar bRequest; // Standard Request Code
iword wValue; // Value Field
iword wIndex; // Index or Offset Field
iword wLength; // Number of Bytes to transfer (Data Stage)
}
setup_buffer;
// USB Status Codes
#define US_ATTACHED 0x00
#define US_POWERED 0x01
#define US_DEFAULT 0x02
#define US_ADDRESSED 0x03
#define US_CONFIGURED 0x04
#define US_SUSPENDED 0x80
//added the following on April 30, 2004
//EP1 state VERA
#define US_EP1DEFAULT 0x00
#define US_EP1STALL 0x01
// USB Standard Device Request Codes
#define GET_STATUS 0x00
#define CLEAR_FEATURE 0x01
#define SET_FEATURE 0x03
#define SET_ADDRESS 0x05
#define GET_DESCRIPTOR 0x06
#define SET_DESCRIPTOR 0x07 // optional
#define GET_CONFIGURATION 0x08
#define SET_CONFIGURATION 0x09
#define GET_INTERFACE 0x0A
#define SET_INTERFACE 0x0B
#define SYNCH_FRAME 0x0C // optional
// SETUP packet request types
#define CLASS_INTERFACE_TO_DEVICE 0x21
#define CLASS_INTERFACE_TO_HOST 0xA1
// HID class specific requests
#define HID_GET_REPORT 0x01
#define HID_GET_IDLE 0x02
#define HID_SET_REPORT 0x09
#define HID_SET_IDLE 0x0A
#define REQUEST_COMPLETE 0xff // not part of the Standard - just
// a Flag to indicate that the recent
// request has been finished
// Descriptor Types
#define DT_DEVICE 1
#define DT_CONFIGURATION 2
#define DT_STRING 3
#define DT_INTERFACE 4
#define DT_ENDPOINT 5
#define DT_HID_CLASS 0x21
#define DT_HID_REPORT 0x22
#define DT_HID_PHYSICALD 0x23
#endif
/* *************************************************************************
*** ***
** *** End of File *** **
*** ***
************************************************************************* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -