USB CDC
+ -

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. 典型主机端流程

  1. 主机发送 GET_COMM_FEATURE 请求,wValue 指定 Feature Selector。
  2. 设备返回2字节状态数据。
  3. 主机解析低2位,判断多路复用和空闲状态。

7. 参考


如需具体代码实现、数据解析、或其他Feature Selector说明,请继续提问!

0 篇笔记 写笔记

CDC GetCommFeature请求
1. GetCommFeature 请求格式字段值/说明bmRequestType0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口bRequest0x03 (GET_COMM_FEATURE)wValueFeature Selector(......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!