CDC SetHookState请求
2025-07-10
0
0
1. SetHookState 请求用途
SetHookState 用于控制POTS(普通电话交换系统)线路的继电器状态,实现摘机(off-hook)、挂机(on-hook)、监听(snooping/caller ID)等操作。
主机通过此请求通知设备切换线路状态,设备据此控制物理继电器。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x11 (SET_HOOK_STATE) |
wValue | 继电器配置代码(见下表) |
wIndex | 接口号 |
wLength | 0 |
Data | 无 |
3. POTS Relay Configuration Values(Table 49)
状态 | wValue | 说明 |
---|---|---|
ON_HOOK | 0x0000 | 挂机,断开电话线路 |
OFF_HOOK | 0x0001 | 摘机,接通电话线路 |
SNOOPING | 0x0002 | 监听,仅用于接收来电显示数据 |
4. 典型主机端请求示例
C 结构体示例:
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x11, // SET_HOOK_STATE
.wValue = 0x0001, // 0x0000: ON_HOOK, 0x0001: OFF_HOOK, 0x0002: SNOOPING
.wIndex = interface_number, // 通信接口号
.wLength = 0 // 无数据阶段
};
// 发送setup包,无data阶段
5. 设备端处理要点
- 检查 wValue(0x0000/0x0001/0x0002),切换继电器状态。
- ON_HOOK:断开电话线路
- OFF_HOOK:接通电话线路
- SNOOPING:监听线路,仅接收来电显示(Caller ID)数据
- 完成后通过状态阶段(Status Stage)ACK主机。
6. 参考
如需设备端处理代码、主机端调用示例、或继电器控制细节,请继续提问!