USB笔记 标准请求 清除特性 Clear Feature
格式
bmRequestType | bRequest | wValue | wIndex | wLength | Data |
---|---|---|---|---|---|
00000000B 00000001B 00000010B | CLEAR_FEATURE | Feature Selector | Zero Interface Endpoint | Zero | None |
功能
这个请求用于清除或禁用特定的特性(feature)。
bmRequestType
共有三种接收端Recipient:设备(Device),接口(Interface),端点(Endpoint)。
1.设备
bmRequestType | 00000000B |
---|---|
bmRequestType.Recipient | 0b00000(Device) |
bmRequestType.Type | 0b00(Standard) |
bmRequestType.Direction | 0b0(Host-to-Device) |
接收端:设备(Device)
类型:标准(Standard)
方向:主机到设备(Host-to-Device)
2.接口
bmRequestType | 00000001B |
---|---|
bmRequestType.Recipient | 0b00001(Interface) |
bmRequestType.Type | 0b00(Standard) |
bmRequestType.Direction | 0b0(Host-to-Device) |
接收端:接口(Interface)
类型:标准(Standard)
方向:主机到设备(Host-to-Device)
3.端点
bmRequestType | 00000010B |
---|---|
bmRequestType.Recipient | 0b00010(Endpoint) |
bmRequestType.Type | 0b00(Standard) |
bmRequestType.Direction | 0b0(Host-to-Device) |
接收端:端点(Endpoint)
类型:标准(Standard)
方向:主机到设备(Host-to-Device)
bRequest
CLEAR_FEATURE: 0x01
wValue
所要清除的特性(feature)。
wValue字段的特性选择器(Feature selector)值应当与接收端相匹配,既与bmRequestType.Recipient位设置的Recipient相匹配。当接收端是设备时,只能使用设备特性选择器值;当接收端是接口时,只能使用接口特性选择器值;当接收端是端点时,只能使用端点特性选择器值。
特性选择器(feature selector)值与接收端的对应,参照下表。
Feature Selector | Recipient | Value | 含有该Feature的协议 |
---|---|---|---|
ENDPOINT_HALT | Endpoint | 0 | USB1.0/USB1.1/USB2.0/USB3.0/USB3.1/USB3.2 |
FUNCTION_SUSPEND | Interface | 0 | USB3.0/USB3.1/USB3.2 |
DEVICE_REMOTE_WAKEUP | Device | 1 | USB1.0/USB1.1/USB2.0/USB3.1/USB3.2 |
TEST_MODE | Device | 2 | USB2.0/USB3.1/USB3.2 |
b_hnp_enable | Device | 3 | USB3.1/USB3.2 |
a_hnp_support | Device | 4 | USB3.1/USB3.2 |
a_alt_hnp_support | Device | 5 | USB3.1/USB3.2 |
WUSB_DEVICE | Device | 6 | USB3.1/USB3.2 |
U1_ENABLE | Device | 48 | USB3.0/USB3.1/USB3.2 |
U2_ENABLE | Device | 49 | USB3.0/USB3.1/USB3.2 |
LTM_ENABLE | Device | 50 | USB3.0/USB3.1/USB3.2 |
B3_NTF_HOST_REL | Device | 51 | USB3.1/USB3.2 |
B3_RSP_ENABLE | Device | 52 | USB3.1/USB3.2 |
LDM_ENABLE | Device | 53 | USB3.1/USB3.2 |
wIndex
1.设备
当wValue字段的特性选择器(Feature selector)值的接收端是设备时(既使用的是设备特性选择器值),wIndex字段值为0。
2.接口
当wValue字段的特性选择器(Feature selector)值的接收端是接口时(既使用的是接口特性选择器值),wIndex字段值为接口号,格式如下所示。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Interface Number | |||||||
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
Reserved (Reset to zero) | |||||||
Bit 7…5用于表示接口号,其他bits保留为0。
3.端点
当wValue字段的特性选择器(Feature selector)值的接收端是端点时(既使用的是端点特性选择器值),wIndex字段值为端点号,格式如下所示。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Direction | Reserved (Reset to zero) | Endpoint Number | |||||
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
Reserved (Reset to zero) | |||||||
Bit 7,方向(Direction)位被设置为0时表示指定端点号的OUT端点,被设置为1时则表示IN端点。对于控制管道,请求中的方向(Direction)位应该设置为0,但设备可以接受方向(Direction)位的任何一个值。
Bit 3…0用于表示端点号。
其他bits保留为0。
wLength
wLength字段固定为0x0000。
如果wLength不为零,则无效,不指定设备的行为。
Data
无数据阶段(Data stage)。
说明
ClearFeature()请求如果使用不能清除、不存在的特性(feature),或者使用不存在的接口或端点,将导致设备以请求错误来响应,返回STALL。
对于USB 2.0,这个请求可以清除DEVICE_REMOTE_WAKEUP和ENDPOINT_HALT特性。Test_Mode功能无法通过ClearFeature()请求清除。
对于Enhanced SuperSpeed,这个请求可以清除ENDPOINT_HALT、LTM_ENABLE、U1_ENABLE和U2_ENABLE特性。只有当设备处于配置状态时,设备才会处理U1_ENABLE、U2_ENABLE、 LTM_ENABLE。
Clear Feature(ENDPOINT_HALT)这个请求会将bulk, interrupt, isochronous 的数据切换(data toggle)重置为DATA0 (USB 2.0)、Sequence Numbers重置为零(Enhanced SuperSpeed) 和重置增强型超高速批量端点(Enhanced SuperSpeed bulk endpoints)的突发大小(burst size)。
集线器(Hubs)支持其他特性。
支持的状态
支持地址状态(Address state)和配置状态(Configured state),具体如下:
默认状态(Default state):未定义设备处于默认状态时,接收到该请求时的设备行为。
地址状态(Address state):当设备处于地址状态时,该请求有效;使用默认控制管道以外的接口或端点,将导致设备响应请求错误。
配置状态(Configured state):当设备处于配置状态时,这是一个有效的请求。
示例
Setup packet
[参考资料]
Universal Serial Bus Specification Revision 1.0
Universal Serial Bus Specification Revision 1.1
Universal Serial Bus Specification Revision 2.0
Universal Serial Bus 3.0 Specification
Universal Serial Bus 3.1 Specification
Universal Serial Bus 3.2 Specification
USB Complete, 5th Edition
本文链接:https://blog.csdn.net/u012028275/article/details/114765691