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

📄 usb.h

📁 基于组件方式开发操作系统的OSKIT源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -