NCM 类特定代码(Class-Specific Codes)
2025-07-07
0
0
以下是关于 NCM(Network Control Model)在 USB 设备描述符中使用的类特定代码的完整解析,涵盖通信接口和数据接口的关键定义:
0. NCM 通信接口Class代码(Communications Interface Subclass Code)
1. NCM 通信接口SubClass代码(Communications Interface Subclass Code)
- 代码值:0Dh
- 含义:标识接口为 网络控制模型(Network Control Model, NCM)。
- 应用位置:
- 标准接口描述符(
bInterfaceSubClass
字段)。
- 标准接口描述符(
- 规范依据:
2. NCM 通信接口Protocol代码(Communications Interface Protocol Code)
Protocol代码值 | 协议类型 | 规范依据 | 说明 |
---|---|---|---|
00h | None | [USBCDC12] | 无封装命令:不支持 SendEncapsulatedCommand /GetEncapsulatedResponse 。 |
01h-06h | N/A | [USBCDC12] | 禁用值:保留给CDC通用规范,NCM设备不得使用。 |
06h-FDh | Reserved | - | 未来扩展:保留给NCM规范后续版本。 |
FEh | OEM defined | [USBWMC11] | 厂商自定义协议:需配合命令集功能描述符实现私有控制命令。 |
FFh | N/A | [USBCDC12] | 禁用值:禁止使用。 |
关键规则:
- 若设备的 NCM功能描述符 中
bmNetworkCapabilities
的D2
位为0
(表示不支持封装命令),则bInterfaceProtocol
必须设为00h
。 - 无论协议代码如何,所有NCM设备必须实现 默认管道请求和通知(表6-1和表6-4)。
3. NCM 数据接口协议代码(Data Class Protocol Code)
- 代码值:
01h
- 含义:标识数据接口使用 网络传输块(Network Transfer Block, NTB) 格式(见规范第3.3.3节)。
- 应用位置:
- 数据接口描述符的
bInterfaceProtocol
字段(Alternate Setting 0 和 1)。
- 数据接口描述符的
- 规范依据:
- [USBCDC12] 数据类协议定义。
4. NCM 功能描述符代码(Functional Descriptor Code)
- 代码值:
1Ah
- 名称:
NCM_FUNC_DESC_CODE
- 作用:标识后续描述符为 NCM功能描述符(详见表5-2)。
- 描述符内容:
- 包含设备支持的NTB大小、对齐要求、能力标志(如是否支持封装命令)等关键参数。
5. 开发者注意事项
描述符配置:
- 通信接口:
bInterfaceClass = 0x02
(Communication Device Class)。bInterfaceSubClass = 0x0D
(NCM)。bInterfaceProtocol
根据功能选择00h
或FEh
。
- 数据接口:
bInterfaceClass = 0x0A
(Data Interface Class)。bInterfaceProtocol = 0x01
(NTB)。
- 通信接口:
兼容性检查:
- 主机驱动应验证
bInterfaceProtocol
的合法性,拒绝使用禁用值(如01h-06h
)。
- 主机驱动应验证
功能描述符依赖:
- 若使用
FEh
(OEM协议),必须提供 命令集功能描述符(遵循[USBWMC11])。
- 若使用
总结
NCM通过以下代码实现标准化与扩展性的平衡:
- 通信接口:
- 子类
0Dh
明确标识NCM。 - 协议代码
00h
(无命令)或FEh
(厂商扩展)控制封装命令支持。
- 子类
- 数据接口:
- 协议
01h
强制使用NTB格式,确保数据传输兼容性。
- 协议
- 功能描述符:
- 代码
1Ah
提供设备能力详情,是NCM功能配置的核心。
- 代码
开发者需严格遵循代码分配规则,避免使用保留或禁用值,以确保设备兼容性和未来可扩展性。