CDC GetATMVCStatistics
2025-07-11
0
0
1. 请求用途
GetATMVCStatistics 用于根据特性选择器检索ATM设备统计信息,针对在最新前置SetATMDefaultVC请求中指定的VPI/VCI。
主机通过此请求获取特定虚电路的统计信息,此请求仅适用于Type 3设备。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bRequest | 0x53 (GET_ATM_VC_STATISTICS) |
wValue | 特性选择器(Feature Selector,见下表) |
wIndex | 接口号 |
wLength | 4 |
Data | 32位无符号整数(设备返回的统计值) |
3. ATM VC Selector Codes(Table 66)
特性选择器 | 代码 | 目标 | 数据长度 | 描述 |
---|---|---|---|---|
RESERVED | 0x00 | None | None | 保留供将来使用 |
VC_US_CELLS_SENT | 0x01 | Interface | 4 | 自设备上电或复位以来为指定VPI/VCI向上游WAN链路发送的信元数量。这是一个32位无符号整数,每次发送信元时递增,如果达到最大值则回绕到0。设备对此统计的支持是可选的。 |
VC_DS_CELLS_RECEIVED | 0x02 | Interface | 4 | 自设备上电或复位以来为指定VPI/VCI从下游WAN链路接收的信元数量。这是一个32位无符号整数,每次接收信元时递增,如果达到最大值则回绕到0。设备对此统计的支持是可选的。 |
4. 典型主机端请求示例
C 结构体示例:
uint32_t vc_statistic_value;
USB_SETUP_PACKET setup = {
.bmRequestType = 0xA1, // 设备到主机,类,接口
.bRequest = 0x53, // GET_ATM_VC_STATISTICS
.wValue = 0x0001, // VC_US_CELLS_SENT
.wIndex = interface_number, // 通信接口号
.wLength = 4 // 4字节统计值
};
// 发送setup包,读取vc_statistic_value数据
5. 设备端处理要点
- 仅适用于Type 3设备。
- 解析wValue中的特性选择器。
- 使用之前SetATMDefaultVC设置的VPI/VCI值。
- 根据选择器返回相应的32位统计值。
- 完成后通过状态阶段(Status Stage)ACK主机。
6. 常见应用场景
场景 | 特性选择器 | 代码 | 说明 |
---|---|---|---|
VC发送统计 | VC_US_CELLS_SENT | 0x01 | 获取特定VC发送的信元数 |
VC接收统计 | VC_DS_CELLS_RECEIVED | 0x02 | 获取特定VC接收的信元数 |
7. 参考
- USB CDC ATM 子类规范 6.5.4](https://www.usb.org/document-library/class-definitions-communication-devices-12)
- SetATMDefaultVC 6.5.3](https://www.usb.org/document-library/class-definitions-communication-devices-12)