CDC LineStateChange通知
2025-07-11
本文链接为:http://www.usbzh.com/article/detail-1545.html ,欢迎转载,转载请附上本文链接。
LineStateChange通知用途
LineStateChange 通知标识对应于发送通知消息的接口或联合主接口的线路状态发生了变化。
当线路状态发生变化时,设备会发送此通知告知主机,某些线路状态变化可能提供额外信息,这些信息会在附加的线路状态数据结构中提供。
通知格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bNotification | 0x29 (LINE_STATE_CHANGE) |
wValue | 线路状态变化值(见下表) |
wIndex | 接口号 |
wLength | 数据长度 |
Data | 变长线路状态结构体 |
Line State Change Values(Table 71)
线路状态变化值 | 描述 |
---|---|
0x0000 | 线路变为空闲 |
0x0001 | 线路连接到保持位置 |
0x0002 | 钩挂开关摘机 |
0x0003 | 钩挂开关挂机 |
典型设备端通知示例
C 结构体示例:
// 线路摘机通知
uint8_t line_off_hook_notification[] = {
0xA1, // bmRequestType (设备到主机,类,接口)
0x29, // bNotification (LINE_STATE_CHANGE)
0x02, 0x00, // wValue (Hook-switch off hook)
0x01, 0x00, // wIndex (Interface 1)
0x00, 0x00 // wLength (No additional data)
};
// 线路挂机通知
uint8_t line_on_hook_notification[] = {
0xA1, // bmRequestType
0x29, // bNotification (LINE_STATE_CHANGE)
0x03, 0x00, // wValue (Hook-switch on hook)
0x01, 0x00, // wIndex (Interface 1)
0x00, 0x00 // wLength (No additional data)
};
主机端处理要点
- 通过中断端点接收通知。
- 解析wValue中的线路状态变化值。
- 根据状态变化处理相应的事件:
- 0x0000:线路空闲
- 0x0001:线路保持
- 0x0002:摘机
- 0x0003:挂机
- 如果有附加数据,解析线路状态结构体。
常见应用场景
场景 | 状态值 | 说明 |
---|---|---|
线路空闲 | 0x0000 | 线路未使用 |
线路保持 | 0x0001 | 线路处于保持状态 |
摘机 | 0x0002 | 检测到摘机操作 |
挂机 | 0x0003 | 检测到挂机操作 |
参考
- USB CDC PSTN 子类规范 6.3.7](https://www.usb.org/document-library/class-definitions-communication-devices-12)