📄 usb_defs.h
字号:
/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Part of this code has been derived from linux * */#ifndef _USB_DEFS_H_#define _USB_DEFS_H_/* Everything is aribtrary */#define USB_ALTSETTINGALLOC 4#define USB_MAXALTSETTING 128 /* Hard limit */#define USB_MAX_DEVICE 32#define USB_MAXCONFIG 8#define USB_MAXINTERFACES 8#define USB_MAXENDPOINTS 16#define USB_MAXCHILDREN 8 /* This is arbitrary */#define USB_MAX_HUB 16#define USB_CNTL_TIMEOUT 100 /* 100ms timeout *//* USB constants *//* Device and/or Interface Class codes */#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */#define USB_CLASS_AUDIO 1#define USB_CLASS_COMM 2#define USB_CLASS_HID 3#define USB_CLASS_PRINTER 7#define USB_CLASS_MASS_STORAGE 8#define USB_CLASS_HUB 9#define USB_CLASS_DATA 10#define USB_CLASS_VENDOR_SPEC 0xff/* some HID sub classes */#define USB_SUB_HID_NONE 0#define USB_SUB_HID_BOOT 1/* some UID Protocols */#define USB_PROT_HID_NONE 0#define USB_PROT_HID_KEYBOARD 1#define USB_PROT_HID_MOUSE 2/* Sub STORAGE Classes */#define US_SC_RBC 1 /* Typically, flash devices */#define US_SC_8020 2 /* CD-ROM */#define US_SC_QIC 3 /* QIC-157 Tapes */#define US_SC_UFI 4 /* Floppy */#define US_SC_8070 5 /* Removable media */#define US_SC_SCSI 6 /* Transparent */#define US_SC_MIN US_SC_RBC#define US_SC_MAX US_SC_SCSI/* STORAGE Protocols */#define US_PR_CB 1 /* Control/Bulk w/o interrupt */#define US_PR_CBI 0 /* Control/Bulk/Interrupt */#define US_PR_BULK 0x50 /* bulk only *//* USB types */#define USB_TYPE_STANDARD (0x00 << 5)#define USB_TYPE_CLASS (0x01 << 5)#define USB_TYPE_VENDOR (0x02 << 5)#define USB_TYPE_RESERVED (0x03 << 5)/* USB recipients */#define USB_RECIP_DEVICE 0x00#define USB_RECIP_INTERFACE 0x01#define USB_RECIP_ENDPOINT 0x02#define USB_RECIP_OTHER 0x03/* USB directions */#define USB_DIR_OUT 0#define USB_DIR_IN 0x80/* Descriptor types */#define USB_DT_DEVICE 0x01#define USB_DT_CONFIG 0x02#define USB_DT_STRING 0x03#define USB_DT_INTERFACE 0x04#define USB_DT_ENDPOINT 0x05#define USB_DT_HID (USB_TYPE_CLASS | 0x01)#define USB_DT_REPORT (USB_TYPE_CLASS | 0x02)#define USB_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)#define USB_DT_HUB (USB_TYPE_CLASS | 0x09)/* Descriptor sizes per descriptor type */#define USB_DT_DEVICE_SIZE 18#define USB_DT_CONFIG_SIZE 9#define USB_DT_INTERFACE_SIZE 9#define USB_DT_ENDPOINT_SIZE 7#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */#define USB_DT_HUB_NONVAR_SIZE 7#define USB_DT_HID_SIZE 9/* Endpoints */#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */#define USB_ENDPOINT_DIR_MASK 0x80#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */#define USB_ENDPOINT_XFER_CONTROL 0#define USB_ENDPOINT_XFER_ISOC 1#define USB_ENDPOINT_XFER_BULK 2#define USB_ENDPOINT_XFER_INT 3/* USB Packet IDs (PIDs) */#define USB_PID_UNDEF_0 0xf0#define USB_PID_OUT 0xe1#define USB_PID_ACK 0xd2#define USB_PID_DATA0 0xc3#define USB_PID_UNDEF_4 0xb4#define USB_PID_SOF 0xa5#define USB_PID_UNDEF_6 0x96#define USB_PID_UNDEF_7 0x87#define USB_PID_UNDEF_8 0x78#define USB_PID_IN 0x69#define USB_PID_NAK 0x5a#define USB_PID_DATA1 0x4b#define USB_PID_PREAMBLE 0x3c#define USB_PID_SETUP 0x2d#define USB_PID_STALL 0x1e#define USB_PID_UNDEF_F 0x0f/* Standard requests */#define USB_REQ_GET_STATUS 0x00#define USB_REQ_CLEAR_FEATURE 0x01#define USB_REQ_SET_FEATURE 0x03#define USB_REQ_SET_ADDRESS 0x05#define USB_REQ_GET_DESCRIPTOR 0x06#define USB_REQ_SET_DESCRIPTOR 0x07#define USB_REQ_GET_CONFIGURATION 0x08#define USB_REQ_SET_CONFIGURATION 0x09#define USB_REQ_GET_INTERFACE 0x0A#define USB_REQ_SET_INTERFACE 0x0B#define USB_REQ_SYNCH_FRAME 0x0C/* HID requests */#define USB_REQ_GET_REPORT 0x01#define USB_REQ_GET_IDLE 0x02#define USB_REQ_GET_PROTOCOL 0x03#define USB_REQ_SET_REPORT 0x09#define USB_REQ_SET_IDLE 0x0A#define USB_REQ_SET_PROTOCOL 0x0B/* "pipe" definitions */#define PIPE_ISOCHRONOUS 0#define PIPE_INTERRUPT 1#define PIPE_CONTROL 2#define PIPE_BULK 3#define PIPE_DEVEP_MASK 0x0007ff00#define USB_ISOCHRONOUS 0#define USB_INTERRUPT 1#define USB_CONTROL 2#define USB_BULK 3/* USB-status codes: */#define USB_ST_ACTIVE 0x1 /* TD is active */#define USB_ST_STALLED 0x2 /* TD is stalled */#define USB_ST_BUF_ERR 0x4 /* buffer error */#define USB_ST_BABBLE_DET 0x8 /* Babble detected */#define USB_ST_NAK_REC 0x10 /* NAK Received*/#define USB_ST_CRC_ERR 0x20 /* CRC/timeout Error */#define USB_ST_BIT_ERR 0x40 /* Bitstuff error */#define USB_ST_NOT_PROC 0x80000000L /* Not yet processed *//************************************************************************* * Hub defines *//* * Hub request types */#define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE)#define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER)/* * Hub Class feature numbers */#define C_HUB_LOCAL_POWER 0#define C_HUB_OVER_CURRENT 1/* * Port feature numbers */#define USB_PORT_FEAT_CONNECTION 0#define USB_PORT_FEAT_ENABLE 1#define USB_PORT_FEAT_SUSPEND 2#define USB_PORT_FEAT_OVER_CURRENT 3#define USB_PORT_FEAT_RESET 4#define USB_PORT_FEAT_POWER 8#define USB_PORT_FEAT_LOWSPEED 9#define USB_PORT_FEAT_C_CONNECTION 16#define USB_PORT_FEAT_C_ENABLE 17#define USB_PORT_FEAT_C_SUSPEND 18#define USB_PORT_FEAT_C_OVER_CURRENT 19#define USB_PORT_FEAT_C_RESET 20/* wPortStatus bits */#define USB_PORT_STAT_CONNECTION 0x0001#define USB_PORT_STAT_ENABLE 0x0002#define USB_PORT_STAT_SUSPEND 0x0004#define USB_PORT_STAT_OVERCURRENT 0x0008#define USB_PORT_STAT_RESET 0x0010#define USB_PORT_STAT_POWER 0x0100#define USB_PORT_STAT_LOW_SPEED 0x0200/* wPortChange bits */#define USB_PORT_STAT_C_CONNECTION 0x0001#define USB_PORT_STAT_C_ENABLE 0x0002#define USB_PORT_STAT_C_SUSPEND 0x0004#define USB_PORT_STAT_C_OVERCURRENT 0x0008#define USB_PORT_STAT_C_RESET 0x0010/* wHubCharacteristics (masks) */#define HUB_CHAR_LPSM 0x0003#define HUB_CHAR_COMPOUND 0x0004#define HUB_CHAR_OCPM 0x0018/* *Hub Status & Hub Change bit masks */#define HUB_STATUS_LOCAL_POWER 0x0001#define HUB_STATUS_OVERCURRENT 0x0002#define HUB_CHANGE_LOCAL_POWER 0x0001#define HUB_CHANGE_OVERCURRENT 0x0002#endif /*_USB_DEFS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -