CDC SetRingerParms
2025-07-11
0
0
1. SetRingerParms 请求用途
SetRingerParms 用于配置通信设备的振铃参数,可以全局配置(联合主接口)或按线路配置(多线路设备)。
主机通过此请求设置振铃特性,包括振铃存在性、音量、模式等参数。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x30 (SET_RINGER_PARMS) |
wValue | 0x0000 |
wIndex | 接口号 |
wLength | 4 |
Data | Ringer Configuration bitmap(4字节,见下表) |
3. Ringer Configuration Bitmap Values(Table 52)
位 | 名称/说明 |
---|---|
D31 | 振铃存在标志<br>0:振铃不存在<br>1:振铃存在<br>GetRingerParms时,0表示寻址元素无振铃 |
D30..D16 | RESERVED(复位为0) |
D15..D8 | 振铃音量设置<br>0:振铃音量关闭<br>255:最大振铃音量 |
D7..D0 | 振铃模式类型选择<br>对应设备内部支持的振铃模式或声音效果 |
位图示例:
- 0x80000000:振铃存在,音量0,模式0
- 0x80FF0001:振铃存在,最大音量,模式1
- 0x00000000:振铃不存在
4. 典型主机端请求示例
C 结构体示例:
uint32_t ringer_config = 0x80FF0001; // 振铃存在,最大音量,模式1
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x30, // SET_RINGER_PARMS
.wValue = 0x0000,
.wIndex = interface_number, // 通信接口号
.wLength = 4 // 4字节配置数据
};
// 发送setup包和ringer_config数据
5. 设备端处理要点
- 接收并解析4字节的Ringer Configuration bitmap。
- 根据D31位判断振铃是否存在。
- 根据D15..D8位设置振铃音量。
- 根据D7..D0位选择振铃模式。
- 完成后通过状态阶段(Status Stage)ACK主机。
6. 常见配置示例
配置类型 | 位图值 | D31 | 音量 | 模式 | 说明 |
---|---|---|---|---|---|
振铃关闭 | 0x00000000 | 0 | 0 | 0 | 振铃不存在 |
标准振铃 | 0x80FF0001 | 1 | 255 | 1 | 标准振铃模式 |
静音振铃 | 0x80000001 | 1 | 0 | 1 | 静音模式 |
自定义模式 | 0x80800002 | 1 | 128 | 2 | 中等音量,模式2 |
7. 参考
- USB CDC PSTN 子类规范 6.3.13](https://www.usb.org/document-library/class-definitions-communication-devices-12)
- GetRingerParms 6.3.14](https://www.usb.org/document-library/class-definitions-communication-devices-12)