📄 ch9.h
字号:
/*-------------------------------------------------------------------------*//* USB_DT_INTERFACE: Interface descriptor */struct usb_interface_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bInterfaceNumber; __u8 bAlternateSetting; __u8 bNumEndpoints; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; __u8 iInterface;} __attribute__ ((packed));#define USB_DT_INTERFACE_SIZE 9/*-------------------------------------------------------------------------*//* USB_DT_ENDPOINT: Endpoint descriptor */struct usb_endpoint_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bEndpointAddress; __u8 bmAttributes; __le16 wMaxPacketSize; __u8 bInterval; /* NOTE: these two are _only_ in audio endpoints. */ /* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */ __u8 bRefresh; __u8 bSynchAddress;} __attribute__ ((packed));#define USB_DT_ENDPOINT_SIZE 7#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension *//* * 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#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80/*-------------------------------------------------------------------------*//* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */struct usb_qualifier_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 bcdUSB; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bMaxPacketSize0; __u8 bNumConfigurations; __u8 bRESERVED;} __attribute__ ((packed));/*-------------------------------------------------------------------------*//* USB_DT_OTG (from OTG 1.0a supplement) */struct usb_otg_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bmAttributes; /* support for HNP, SRP, etc */} __attribute__ ((packed));/* from usb_otg_descriptor.bmAttributes */#define USB_OTG_SRP (1 << 0)#define USB_OTG_HNP (1 << 1) /* swap host/device roles *//*-------------------------------------------------------------------------*//* USB_DT_DEBUG: for special highspeed devices, replacing serial console */struct usb_debug_descriptor { __u8 bLength; __u8 bDescriptorType; /* bulk endpoints with 8 byte maxpacket */ __u8 bDebugInEndpoint; __u8 bDebugOutEndpoint;} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */struct usb_interface_assoc_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bFirstInterface; __u8 bInterfaceCount; __u8 bFunctionClass; __u8 bFunctionSubClass; __u8 bFunctionProtocol; __u8 iFunction;} __attribute__ ((packed));/*-------------------------------------------------------------------------*//* USB_DT_SECURITY: group of wireless security descriptors, including * encryption types available for setting up a CC/association. */struct usb_security_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wTotalLength; __u8 bNumEncryptionTypes;} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_KEY: used with {GET,SET}_SECURITY_DATA; only public keys * may be retrieved. */struct usb_key_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 tTKID[3]; __u8 bReserved; __u8 bKeyData[0];} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_ENCRYPTION_TYPE: bundled in DT_SECURITY groups */struct usb_encryption_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bEncryptionType;#define USB_ENC_TYPE_UNSECURE 0#define USB_ENC_TYPE_WIRED 1 /* non-wireless mode */#define USB_ENC_TYPE_CCM_1 2 /* aes128/cbc session */#define USB_ENC_TYPE_RSA_1 3 /* rsa3072/sha1 auth */ __u8 bEncryptionValue; /* use in SET_ENCRYPTION */ __u8 bAuthKeyIndex;} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_BOS: group of wireless capabilities */struct usb_bos_descriptor { __u8 bLength; __u8 bDescriptorType; __le16 wTotalLength; __u8 bNumDeviceCaps;} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_DEVICE_CAPABILITY: grouped with BOS */struct usb_dev_cap_header { __u8 bLength; __u8 bDescriptorType; __u8 bDevCapabilityType;} __attribute__((packed));#define USB_CAP_TYPE_WIRELESS_USB 1struct usb_wireless_cap_descriptor { /* Ultra Wide Band */ __u8 bLength; __u8 bDescriptorType; __u8 bDevCapabilityType; __u8 bmAttributes;#define USB_WIRELESS_P2P_DRD (1 << 1)#define USB_WIRELESS_BEACON_MASK (3 << 2)#define USB_WIRELESS_BEACON_SELF (1 << 2)#define USB_WIRELESS_BEACON_DIRECTED (2 << 2)#define USB_WIRELESS_BEACON_NONE (3 << 2) __le16 wPHYRates; /* bit rates, Mbps */#define USB_WIRELESS_PHY_53 (1 << 0) /* always set */#define USB_WIRELESS_PHY_80 (1 << 1)#define USB_WIRELESS_PHY_107 (1 << 2) /* always set */#define USB_WIRELESS_PHY_160 (1 << 3)#define USB_WIRELESS_PHY_200 (1 << 4) /* always set */#define USB_WIRELESS_PHY_320 (1 << 5)#define USB_WIRELESS_PHY_400 (1 << 6)#define USB_WIRELESS_PHY_480 (1 << 7) __u8 bmTFITXPowerInfo; /* TFI power levels */ __u8 bmFFITXPowerInfo; /* FFI power levels */ __le16 bmBandGroup; __u8 bReserved;} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_DT_WIRELESS_ENDPOINT_COMP: companion descriptor associated with * each endpoint descriptor for a wireless device */struct usb_wireless_ep_comp_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bMaxBurst; __u8 bMaxSequence; __le16 wMaxStreamDelay; __le16 wOverTheAirPacketSize; __u8 bOverTheAirInterval; __u8 bmCompAttributes;#define USB_ENDPOINT_SWITCH_MASK 0x03 /* in bmCompAttributes */#define USB_ENDPOINT_SWITCH_NO 0#define USB_ENDPOINT_SWITCH_SWITCH 1#define USB_ENDPOINT_SWITCH_SCALE 2} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_REQ_SET_HANDSHAKE is a four-way handshake used between a wireless * host and a device for connection set up, mutual authentication, and * exchanging short lived session keys. The handshake depends on a CC. */struct usb_handshake { __u8 bMessageNumber; __u8 bStatus; __u8 tTKID[3]; __u8 bReserved; __u8 CDID[16]; __u8 nonce[16]; __u8 MIC[8];} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB_REQ_SET_CONNECTION modifies or revokes a connection context (CC). * A CC may also be set up using non-wireless secure channels (including * wired USB!), and some devices may support CCs with multiple hosts. */struct usb_connection_context { __u8 CHID[16]; /* persistent host id */ __u8 CDID[16]; /* device id (unique w/in host context) */ __u8 CK[16]; /* connection key */} __attribute__((packed));/*-------------------------------------------------------------------------*//* USB 2.0 defines three speeds, here's how Linux identifies them */enum usb_device_speed { USB_SPEED_UNKNOWN = 0, /* enumerating */ USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ USB_SPEED_HIGH, /* usb 2.0 */ USB_SPEED_VARIABLE, /* wireless (usb 2.5) */};enum usb_device_state { /* NOTATTACHED isn't in the USB spec, and this state acts * the same as ATTACHED ... but it's clearer this way. */ USB_STATE_NOTATTACHED = 0, /* chapter 9 and authentication (wireless) device states */ USB_STATE_ATTACHED, USB_STATE_POWERED, /* wired */ USB_STATE_UNAUTHENTICATED, /* auth */ USB_STATE_RECONNECTING, /* auth */ USB_STATE_DEFAULT, /* limited function */ USB_STATE_ADDRESS, USB_STATE_CONFIGURED, /* most functions */ USB_STATE_SUSPENDED /* NOTE: there are actually four different SUSPENDED * states, returning to POWERED, DEFAULT, ADDRESS, or * CONFIGURED respectively when SOF tokens flow again. */};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -