CDC ResponseAvailable通知
2025-07-11
0
0
ResponseAvailable 通知用途
ResponseAvailable 通知允许设备通知主机有响应可用。
当设备准备好响应主机的命令时,会发送此通知告知主机。主机随后可以通过GetEncapsulatedResponse请求来获取具体的响应内容。
通知格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bNotification | 0x01 (RESPONSE_AVAILABLE) |
wValue | 0x0000 |
wIndex | 接口号 |
wLength | 0 |
Data | 无 |
典型设备端通知示例
C 结构体示例:
// 响应可用通知
uint8_t response_available_notification[] = {
0xA1, // bmRequestType (设备到主机,类,接口)
0x01, // bNotification (RESPONSE_AVAILABLE)
0x00, 0x00, // wValue (Zero)
0x01, 0x00, // wIndex (Interface 1)
0x00, 0x00 // wLength (0 = No data)
};
主机端处理要点
- 通过中断端点接收通知。
- 识别RESPONSE_AVAILABLE通知。
- 发送GetEncapsulatedResponse请求获取响应内容。
- 处理获取到的响应数据。
典型工作流程
- 主机发送命令:主机通过SendEncapsulatedCommand发送命令
- 设备处理:设备处理命令并准备响应
- 发送通知:设备发送ResponseAvailable通知
- 主机获取响应:主机发送GetEncapsulatedResponse请求
- 设备返回响应:设备返回具体的响应数据
常见应用场景
场景 | 说明 |
---|---|
调制解调器 | AT命令响应可用 |
网络设备 | 配置命令响应可用 |
串口设备 | 控制命令响应可用 |
参考
- USB CDC 规范 6.3.2](https://www.usb.org/document-library/class-definitions-communication-devices-12)
- GetEncapsulatedResponse 6.2.2](https://www.usb.org/document-library/class-definitions-communication-devices-12)