USB CDC
+ -

CDC SetLineParms

2025-07-11 0 0

1. SetLineParms 请求用途

SetLineParms 用于改变线路状态,对应发送命令的接口或联合主接口。
主机通过此请求控制电话线路的状态变化,如挂断通话、开始新通话、应用振铃等操作。


2. USB 控制传输格式

字段 值/说明
bmRequestType 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口
bRequest 0x34 (SET_LINE_PARMS)
wValue 线路状态改变值(Line State Change,见下表)
wIndex 接口号
wLength 数据长度(某些命令需要额外数据)
Data 额外数据(如通话索引等)

3. Line State Change Value Definitions(Table 54)

线路状态改变值 wValue 描述
Drop Call 0x0000 挂断线路上的活动通话
Start Call 0x0001 在线路上开始新通话
Apply Ringing 0x0002 在线路上应用振铃
Remove Ringing 0x0003 从线路移除振铃
Switch Call 0x0004 切换到线路上的特定通话。Data用于传递1字节通话索引来标识通话。

4. 典型主机端请求示例

C 结构体示例:

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,           // 主机到设备,类,接口
    .bRequest = 0x34,                // SET_LINE_PARMS
    .wValue = 0x0001,                // 0x0000: Drop Call, 0x0001: Start Call, 0x0002: Apply Ringing, 0x0003: Remove Ringing, 0x0004: Switch Call
    .wIndex = interface_number,      // 通信接口号
    .wLength = 0                     // 无额外数据
};
// 发送setup包,无data阶段

切换到特定通话示例:

uint8_t call_index = 0x01;  // 通话索引

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,
    .bRequest = 0x34,
    .wValue = 0x0004,                // Switch Call
    .wIndex = interface_number,
    .wLength = 1                     // 1字节通话索引
};
// 发送setup包和call_index数据

5. 设备端处理要点

  • 检查 wValue,执行相应的线路状态改变操作。
  • 对于Switch Call(0x0004),从Data阶段读取1字节通话索引。
  • 完成后通过状态阶段(Status Stage)ACK主机。

6. 常见应用场景

场景 wValue 数据长度 说明
挂断通话 0x0000 0 挂断当前通话
开始新通话 0x0001 0 开始新的通话
应用振铃 0x0002 0 在线路上产生振铃
移除振铃 0x0003 0 停止线路振铃
切换通话 0x0004 1 切换到指定通话

7. 参考

0 篇笔记 写笔记

CDC SetLineParms
1. SetLineParms 请求用途SetLineParms 用于改变线路状态,对应发送命令的接口或联合主接口。主机通过此请求控制电话线路的状态变化,如挂断通话、开始新通话、应用振铃等操作。2. USB 控制传输格式字段值/说明bmRequestType0x21 (001......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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