CDC DialDigits
2025-07-11
0
0
1. DialDigits 请求用途
DialDigits 用于在指定线路上拨号DTMF数字。
主机通过此请求发送拨号字符串,设备根据字符串中的命令字符执行相应的拨号操作,支持数字拨号、DTMF音调、脉冲拨号、暂停等功能。
2. USB 控制传输格式
字段 |
值/说明 |
bmRequestType |
0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest |
0x36 (DIAL_DIGITS) |
wValue |
0x0000 |
wIndex |
接口号 |
wLength |
拨号字符串长度 |
Data |
拨号字符串(见下表支持的字符) |
3. Characters in a Dialing Command(Table 59)
字符 |
动作 |
0-9 |
拨号指定数字 |
* # |
拨号指定DTMF键 |
P p |
使用脉冲拨号拨号所有后续数字 |
T t |
使用音调拨号拨号所有后续数字 |
! |
在拨号字符串中插入钩挂开关闪烁 |
, |
暂停拨号固定时间段(通常2秒) |
; |
表示稍后将提供更多数字 |
W w |
在继续拨号前等待拨号音或中断拨号音 |
D d |
保持音调开启。所有后续拨号音保持开启直到收到保持音调关闭 |
U u |
保持音调关闭。关闭所有保持的拨号音 |
4. 典型主机端请求示例
C 结构体示例:
char dialing_string[] = "T1234567890"; // 音调拨号
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x36, // DIAL_DIGITS
.wValue = 0x0000,
.wIndex = interface_number, // 通信接口号
.wLength = strlen(dialing_string)
};
// 发送setup包和dialing_string数据
5. 拨号字符串示例
拨号字符串 |
说明 |
“T1234567890” |
音调拨号1234567890 |
“P1234567890” |
脉冲拨号1234567890 |
“T123,456” |
音调拨号123,暂停2秒,拨号456 |
“T123!456” |
音调拨号123,钩挂闪烁,拨号456 |
“T123W456” |
音调拨号123,等待拨号音,拨号456 |
6. 设备端处理要点
- 解析拨号字符串中的每个字符。
- 根据字符类型执行相应的拨号操作。
- 支持混合拨号模式(如先音调后脉冲)。
- 完成后通过状态阶段(Status Stage)ACK主机。
7. 常见应用场景
场景 |
拨号字符串 |
说明 |
标准拨号 |
“T1234567890” |
音调拨号电话号码 |
脉冲拨号 |
“P1234567890” |
脉冲拨号电话号码 |
暂停拨号 |
“T123,456” |
拨号123,暂停,拨号456 |
钩挂闪烁 |
“T123!456” |
拨号123,闪烁,拨号456 |
8. 参考
随手分享,手有余香