CDC GetATMDeviceStatistics
2025-07-11
0
0
1. GetATMDeviceStatistics 请求用途
GetATMDeviceStatistics 用于根据特性选择器检索设备统计信息。
主机通过此请求获取ATM设备的统计信息,返回的值表示自设备上电、复位或收到SET_INTERFACE请求以来发生的匹配指定统计信息的信元数量。这是一个32位无符号整数,每次发生时递增,如果达到最大值则回绕到0。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bRequest | 0x51 (GET_ATM_DEVICE_STATISTICS) |
wValue | 特性选择器(Feature Selector,见下表) |
wIndex | 接口号 |
wLength | 4 |
Data | 32位无符号整数(设备返回的统计值) |
3. ATM Device Statistics Feature Selector Codes(Table 65)
特性选择器 | 代码 | 目标 | 数据长度 | 描述 |
---|---|---|---|---|
RESERVED | 0x00 | None | None | 保留供将来使用 |
US_CELLS_SENT | 0x01 | Interface | 4 | ATM层向上游WAN链路发送的信元数量(可选支持) |
DS_CELLS_RECEIVED | 0x02 | Interface | 4 | ATM层从下游WAN链路接收的信元数量(可选支持) |
DS_CELLS_USB_CONGESTION | 0x03 | Interface | 4 | ATM层从下游WAN链路接收但因USB链路拥塞而丢弃的信元数量(必需支持) |
DS_CELLS_AAL5_CRC_ERROR | 0x04 | Interface | 4 | ATM层从下游WAN链路接收但因AAL5 CRC错误而丢弃的信元数量(Type 3设备必需支持) |
DS_CELLS_HEC_ERROR | 0x05 | Interface | 4 | 从下游WAN链路接收但因信元头部HEC错误而丢弃的信元数量(必需支持) |
DS_CELLS_HEC_ERROR_CORRECTED | 0x06 | Interface | 4 | 从下游WAN链路接收并检测到信元头部HEC错误但成功纠正的信元数量(可选支持) |
4. 典型主机端请求示例
C 结构体示例:
uint32_t statistic_value;
USB_SETUP_PACKET setup = {
.bmRequestType = 0xA1, // 设备到主机,类,接口
.bRequest = 0x51, // GET_ATM_DEVICE_STATISTICS
.wValue = 0x0001, // US_CELLS_SENT
.wIndex = interface_number, // 通信接口号
.wLength = 4 // 4字节统计值
};
// 发送setup包,读取statistic_value数据
5. 设备端处理要点
- 解析wValue中的特性选择器。
- 根据选择器返回相应的32位统计值。
- 确保统计值准确反映设备的实际状态。
- 某些统计是必需的,某些是可选的。
- 完成后通过状态阶段(Status Stage)ACK主机。
6. 常见应用场景
场景 | 特性选择器 | 代码 | 说明 |
---|---|---|---|
发送统计 | US_CELLS_SENT | 0x01 | 获取发送的信元数 |
接收统计 | DS_CELLS_RECEIVED | 0x02 | 获取接收的信元数 |
拥塞统计 | DS_CELLS_USB_CONGESTION | 0x03 | 获取因拥塞丢弃的信元数 |
错误统计 | DS_CELLS_HEC_ERROR | 0x05 | 获取HEC错误的信元数 |
7. 参考
- USB CDC ATM 子类规范 6.5.2](https://www.usb.org/document-library/class-definitions-communication-devices-12)