📄 usb.h
字号:
#define UHF_PORT_SUSPEND 2#define UHF_PORT_OVER_CURRENT 3#define UHF_PORT_RESET 4#define UHF_PORT_POWER 8#define UHF_PORT_LOW_SPEED 9#define UHF_C_PORT_CONNECTION 16#define UHF_C_PORT_ENABLE 17#define UHF_C_PORT_SUSPEND 18#define UHF_C_PORT_OVER_CURRENT 19#define UHF_C_PORT_RESET 20typedef struct { uByte bDescLength; uByte bDescriptorType; uByte bNbrPorts; uWord wHubCharacteristics;#define UHD_PWR 0x03#define UHD_PWR_GANGED 0x00#define UHD_PWR_INDIVIDUAL 0x01#define UHD_PWR_NO_SWITCH 0x02#define UHD_COMPOUND 0x04#define UHD_OC 0x18#define UHD_OC_GLOBAL 0x00#define UHD_OC_INDIVIDUAL 0x08#define UHD_OC_NONE 0x10 uByte bPwrOn2PwrGood; /* delay in 2 ms units */#define UHD_PWRON_FACTOR 2 uByte bHubContrCurrent; uByte DeviceRemovable[32]; /* max 255 ports */#define UHD_NOT_REMOV(desc, i) \ (((desc)->DeviceRemovable[(i)/8] >> ((i) % 8)) & 1) /* deprecated uByte PortPowerCtrlMask[]; */} usb_hub_descriptor_t;#define USB_HUB_DESCRIPTOR_SIZE 8typedef struct { uWord wStatus;/* Device status flags */#define UDS_SELF_POWERED 0x0001#define UDS_REMOTE_WAKEUP 0x0002/* Endpoint status flags */#define UES_HALT 0x0001} usb_status_t;typedef struct { uWord wHubStatus;#define UHS_LOCAL_POWER 0x0001#define UHS_OVER_CURRENT 0x0002 uWord wHubChange;} usb_hub_status_t;typedef struct { uWord wPortStatus;#define UPS_CURRENT_CONNECT_STATUS 0x0001#define UPS_PORT_ENABLED 0x0002#define UPS_SUSPEND 0x0004#define UPS_OVERCURRENT_INDICATOR 0x0008#define UPS_RESET 0x0010#define UPS_PORT_POWER 0x0100#define UPS_LOW_SPEED 0x0200 uWord wPortChange;#define UPS_C_CONNECT_STATUS 0x0001#define UPS_C_PORT_ENABLED 0x0002#define UPS_C_SUSPEND 0x0004#define UPS_C_OVERCURRENT_INDICATOR 0x0008#define UPS_C_PORT_RESET 0x0010} usb_port_status_t;#define UCLASS_UNSPEC 0 /* Unspecified */#define UCLASS_AUDIO 1 /* Audio */#define USUBCLASS_AUDIOCONTROL 1#define USUBCLASS_AUDIOSTREAM 2#define UCLASS_CDC 2 /* Communication */#define USUBCLASS_DIRECT_LINE_CONTROL_MODEL 1#define USUBCLASS_ABSTRACT_CONTROL_MODEL 2#define USUBCLASS_TELEPHONE_CONTROL_MODEL 3#define USUBCLASS_MULTICHANNEL_CONTROL_MODEL /*TBD*/#define USUBCLASS_CAPI_CONTROL_MODEL /*TBD*/#define USUBCLASS_ETHERNET_CONTROL_MODEL /*TBD*/#define USUBCLASS_ATM_CONTROL_MODEL /*TBD*/#define UPROTO_CDC_NONE 0 /* No class spec. protocol required */#define UPROTO_CDC_AT 1 /* V25.ter (AT commands) */#define UCLASS_HID 3 /* Human Interface Device */#define USUBCLASS_BOOT 1#define UCLASS_PRINTER 7 /* Printer/Parallel Port */#define USUBCLASS_PRINTER 1#define UPROTO_PRINTER_UNI 1 /* Unidirectional */#define UPROTO_PRINTER_BI 2 /* Bidirectional */#define UCLASS_MASS 8 /* Mass Storage */#define USUBCLASS_RBC 1 /* Reduced Block comm. (e.g. Flash ) */#define USUBCLASS_SFF8020I 2 /* (e.g. CD ROM) */#define USUBCLASS_QIC157 3 /* (e.g. tape drives) */#define USUBCLASS_UFI 4 /* (e.g. floppy drives) */#define USUBCLASS_SFF8070I 5 /* (e.g. floppy drives) */#define USUBCLASS_SCSI 6 /* SCSI transparent comman set */#define UPROTO_MASS_CBI_I 0 /* CBI protocol with comm. compl. int */#define UPROTO_MASS_CBI 1 /* CBI protocol */#define UPROTO_MASS_BULK /*TBD*/ / * Bulk only transport * /#define UCLASS_HUB 9 /* Hub */#define USUBCLASS_HUB 0#define UCLASS_DATA 10 /* Data pipe for CDC */#define USUBCLASS_DATA 0#define UPROTO_DATA_NONE 0#define UPROTO_DATA_ISDNBRI 0x30 /* Physical iface ISDN BRI */#define UPROTO_DATA_HDLC 0x31 /* HDLC */#define UPROTO_DATA_TRANSPARENT 0x32 /* Transparent */#define UPROTO_DATA_Q921M 0x50 /* Management for Q921 */#define UPROTO_DATA_Q921 0x51 /* Data for Q921 */#define UPROTO_DATA_Q921TM 0x52 /* TEI multiplexer for Q921 */#define UPROTO_DATA_V42BIS 0x90 /* Data compression */ #define UPROTO_DATA_Q931 0x91 /* Euro-ISDN */#define UPROTO_DATA_V120 0x92 /* V.24 rate adaption */#define UPROTO_DATA_CAPI 0x93 /* CAPI 2.0 commands */#define UPROTO_DATA_HOST_BASED 0xfd /* Host based driver */#define UPROTO_DATA_PUF 0xfe /* see Prot. Unit Func. Desc. */#define UPROTO_DATA_VENDOR 0xff /* Vendor specific */#define USB_HUB_MAX_DEPTH 5/* * Minimum time a device needs to be powered down to go through * a power cycle. XXX Are these time in the spec? */#define USB_POWER_DOWN_TIME 200 /* ms */#define USB_PORT_POWER_DOWN_TIME 100 /* ms */#if 0/* These are the values from the spec. */#define USB_PORT_RESET_DELAY 10 /* ms */#define USB_PORT_RESET_SETTLE 10 /* ms */#define USB_PORT_POWERUP_DELAY 100 /* ms */#define USB_SET_ADDRESS_SETTLE 2 /* ms */#else/* Allow for marginal (i.e. non-conforming) devices. */#define USB_PORT_RESET_DELAY 50 /* ms */#define USB_PORT_RESET_RECOVERY 50 /* ms */#define USB_PORT_POWERUP_DELAY 200 /* ms */#define USB_SET_ADDRESS_SETTLE 10 /* ms */#endif#define USB_MIN_POWER 100 /* mA */#define USB_MAX_POWER 500 /* mA */#define USB_BUS_RESET_DELAY 100 /* ms XXX?*/#define USB_RESUME_DELAY 10 /* ms XXX?*//*** ioctl() related stuff ***/struct usb_ctl_request { int addr; usb_device_request_t request; void *data; int flags;/* XXX must match flags in usbdi.h */#define USBD_SHORT_XFER_OK 0x04 int actlen; /* actual length transferred */};struct usb_alt_interface { int config_index; int interface_index; int alt_no;};#define USB_CURRENT_CONFIG_INDEX (-1)#define USB_CURRENT_ALT_INDEX (-1)struct usb_config_desc { int config_index; usb_config_descriptor_t desc;};struct usb_interface_desc { int config_index; int interface_index; int alt_index; usb_interface_descriptor_t desc;};struct usb_endpoint_desc { int config_index; int interface_index; int alt_index; int endpoint_index; usb_endpoint_descriptor_t desc;};struct usb_full_desc { int config_index; u_int size; u_char *data;};struct usb_string_desc { int string_index; int language_id; usb_string_descriptor_t desc;};struct usb_ctl_report_desc { int size; u_char data[1024]; /* filled data size will vary */};struct usb_device_info { u_int8_t addr; /* device address */ char product[USB_MAX_STRING_LEN]; char vendor[USB_MAX_STRING_LEN]; char revision[8]; u_int16_t productNo; u_int16_t vendorNo; u_int8_t class; u_int8_t config; u_int8_t lowspeed; int power; /* power consumption in mA, 0 if selfpowered */ int nports; u_int8_t ports[16];/* hub only: addresses of devices on ports */#define USB_PORT_ENABLED 0xff#define USB_PORT_SUSPENDED 0xfe#define USB_PORT_POWERED 0xfd#define USB_PORT_DISABLED 0xfc};struct usb_ctl_report { int report; u_char data[1024]; /* filled data size will vary */};struct usb_device_stats { u_long requests[4]; /* indexed by transfer type UE_* */};/* USB controller */#define USB_REQUEST _IOWR('U', 1, struct usb_ctl_request)#define USB_SETDEBUG _IOW ('U', 2, int)#define USB_DISCOVER _IO ('U', 3)#define USB_DEVICEINFO _IOWR('U', 4, struct usb_device_info)#define USB_DEVICESTATS _IOR ('U', 5, struct usb_device_stats)/* Generic HID device */#define USB_GET_REPORT_DESC _IOR ('U', 21, struct usb_ctl_report_desc)#define USB_SET_IMMED _IOW ('U', 22, int)#define USB_GET_REPORT _IOWR('U', 23, struct usb_ctl_report)/* Generic USB device */#define USB_GET_CONFIG _IOR ('U', 100, int)#define USB_SET_CONFIG _IOW ('U', 101, int)#define USB_GET_ALTINTERFACE _IOWR('U', 102, struct usb_alt_interface)#define USB_SET_ALTINTERFACE _IOWR('U', 103, struct usb_alt_interface)#define USB_GET_NO_ALT _IOWR('U', 104, struct usb_alt_interface)#define USB_GET_DEVICE_DESC _IOR ('U', 105, usb_device_descriptor_t)#define USB_GET_CONFIG_DESC _IOWR('U', 106, struct usb_config_desc)#define USB_GET_INTERFACE_DESC _IOWR('U', 107, struct usb_interface_desc)#define USB_GET_ENDPOINT_DESC _IOWR('U', 108, struct usb_endpoint_desc)#define USB_GET_FULL_DESC _IOWR('U', 109, struct usb_full_desc)#define USB_GET_STRING_DESC _IOWR('U', 110, struct usb_string_desc)#define USB_DO_REQUEST _IOWR('U', 111, struct usb_ctl_request)#define USB_GET_DEVICEINFO _IOR ('U', 112, struct usb_device_info)#define USB_SET_SHORT_XFER _IOW ('U', 113, int)#endif /* _USB_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -