USB CDC
+ -

CDC CallStateChange通知

2025-07-11 0 0

CallStateChange 通知用途

CallStateChange 通知标识对应于接口或线路联合的线路上的通话状态发生了变化。
当通话状态发生变化时,设备会发送此通知告知主机,包括通话索引、状态变化值和相关的附加信息(如来电显示数据)。


通知格式

字段 值/说明
bmRequestType 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口
bNotification 0x28 (CALL_STATE_CHANGE)
wValue 高字节D15-D8:通话索引<br>低字节D7-D0:通话状态变化值
wIndex 接口号
wLength 数据长度
Data 包含通话状态变化附加信息的变长结构体

Call State Change Value Definitions(Table 70)

通话状态变化值 描述
0x00 保留
0x01 通话变为空闲
0x02 拨号中
0x03 回铃音,提供额外字节描述回铃音类型:<br>0=正常,1=忙音,2=快速忙音,3-254=保留,255=未知
0x04 已连接,提供额外字节描述连接类型:<br>0=语音连接,1=答录机连接,2=传真机连接,3=数据调制解调器连接,4-254=保留,255=未知
0x05 来电,包含以下额外数据(最少4字节):<br>- 字节0:振铃模式(0-3=模式1-4,4-255=保留)<br>- 字节1:时间字符串大小<br>- 时间字符串<br>- 号码字符串大小<br>- 号码字符串<br>- 姓名字符串大小<br>- 姓名字符串

典型设备端通知示例

C 结构体示例:

// 来电通知
uint8_t incoming_call_notification[] = {
    0xA1,           // bmRequestType (设备到主机,类,接口)
    0x28,           // bNotification (CALL_STATE_CHANGE)
    0x05, 0x00,     // wValue (Call Index 0, State Change 0x05)
    0x01, 0x00,     // wIndex (Interface 1)
    0x08, 0x00,     // wLength (8 bytes of data)
    0x00,           // Ringing pattern 1
    0x04,           // Time string size (4 bytes)
    '1', '2', '3', '4', // Time string "1234"
    0x03,           // Number string size (3 bytes)
    '5', '5', '5'   // Number string "555"
};

主机端处理要点

  • 通过中断端点接收通知。
  • 解析wValue:
    • 高字节:通话索引
    • 低字节:状态变化值
  • 根据状态变化值处理相应的事件。
  • 解析附加数据(如来电显示信息)。

常见应用场景

场景 状态值 说明
通话空闲 0x01 通话结束或未建立
拨号中 0x02 正在拨号
回铃音 0x03 听到回铃音
已连接 0x04 通话建立
来电 0x05 收到来电,包含来电显示

参考

0 篇笔记 写笔记

CDC CallStateChange通知
CallStateChange 通知用途CallStateChange 通知标识对应于接口或线路联合的线路上的通话状态发生了变化。当通话状态发生变化时,设备会发送此通知告知主机,包括通话索引、状态变化值和相关的附加信息(如来电显示数据)。通知格式字段值/说明bmRequestT......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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