CDC PulseSetup请求
2025-07-10
0
0
1. PulseSetup 请求用途
PulseSetup 用于为脉冲拨号(pulse dialing)做准备,或在拨号序列完成后脱离保持电路。
- wValue = 0xFFFF:表示拨号完成,要求设备脱离保持电路(disengage holding circuit)。
- wValue = 其他值:为脉冲拨号周期做准备(prepare for a pulse-dialing cycle)。
注意:
- 不是所有设备都需要在脉冲拨号后用此请求脱离保持电路。
- 设备是否需要此“额外请求”由 Direct Line Management Functional Descriptor 的 D2 位指示。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x12 (PULSE_SETUP) |
wValue | 0xFFFF: 结束拨号,脱离保持电路 其他值: 准备脉冲拨号周期 |
wIndex | 接口号 |
wLength | 0 |
Data | 无 |
3. 典型主机端请求示例
C 结构体示例:
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x12, // PULSE_SETUP
.wValue = 0xFFFF, // 0xFFFF: 结束拨号, 其他: 准备拨号
.wIndex = interface_number, // 通信接口号
.wLength = 0 // 无数据阶段
};
// 发送setup包,无data阶段
4. 设备端处理要点
- 检查 wValue:
- 0xFFFF:脱离保持电路
- 其他:准备脉冲拨号
- 依据 Direct Line Management Functional Descriptor 的 D2 位,决定是否需要处理此请求。
- 完成后通过状态阶段(Status Stage)ACK主机。
5. 相关描述符位说明
- Direct Line Management Functional Descriptor 的 D2 位(bit 2):
- 1:需要额外的 PulseSetup 请求来脱离保持电路
- 0:不需要
6. 参考
- USB CDC PSTN 子类规范 6.3.9
- Direct Line Management Functional Descriptor 5.2.3.4
如需设备端处理代码、主机端调用示例、或描述符位设置细节,请继续提问!