CDC GetCommFeature请求
2025-07-10
0
0
1. GetCommFeature 请求格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bRequest | 0x03 (GET_COMM_FEATURE) |
wValue | Feature Selector(特性选择器,见下表) |
wIndex | 接口号 |
wLength | 状态数据长度(依Feature而定,通常为2) |
Data | 状态数据(由设备返回,格式见下) |
2. Feature Selector 代码(Table 47)
Selector 名称 | 代码 | 目标 | 数据长度 | 说明 |
---|---|---|---|---|
RESERVED | 0x00 | None | None | 保留 |
ABSTRACT_STATE | 0x01 | Interface | 2 | 两字节,描述多路复用状态和空闲状态,仅适用于Abstract Control Model |
COUNTRY_SETTING | 0x02 | Interface | 2 | 两字节,ISO 3166国家码,仅适用于提供Country Selection Functional Descriptor的设备 |
3. ABSTRACT_STATE Selector 返回数据格式(Table 48)
- 返回2字节(16位),高14位保留,低2位含义如下:
位 | 名称/说明 |
---|---|
D15..D2 | RESERVED(复位为0) |
D1 | Data Multiplexed State<br>1: 允许在数据类上多路复用呼叫管理命令<br>0: 禁止多路复用 |
D0 | Idle Setting<br>1: 该接口所有端点不接受/发送数据(用于同步)<br>0: 端点继续正常收发数据 |
举例:
- 返回
0x0000
:多路复用关闭,接口不空闲(正常收发数据) - 返回
0x0002
:多路复用开启,接口不空闲 - 返回
0x0001
:多路复用关闭,接口空闲 - 返回
0x0003
:多路复用开启,接口空闲
4. COUNTRY_SETTING Selector 返回数据格式
- 返回2字节,内容为 ISO 3166 国家码(如美国为 0x0001),仅适用于支持 Country Selection 的设备。
5. 控制请求C结构体示例
// 构造GetCommFeature请求
USB_SETUP_PACKET setup = {
.bmRequestType = 0xA1, // 设备到主机,类,接口
.bRequest = 0x03, // GET_COMM_FEATURE
.wValue = feature_selector, // 0x01: ABSTRACT_STATE, 0x02: COUNTRY_SETTING
.wIndex = interface_number, // 通信接口号
.wLength = 2 // 返回数据长度
};
// 发送setup包,读取2字节返回数据
6. 典型主机端流程
- 主机发送 GET_COMM_FEATURE 请求,wValue 指定 Feature Selector。
- 设备返回2字节状态数据。
- 主机解析低2位,判断多路复用和空闲状态。
7. 参考
- USB CDC 规范 6.2.4
- ISO 3166 国家码
如需具体代码实现、数据解析、或其他Feature Selector说明,请继续提问!