CDC 国家选择功能描述符
2025-07-10
0
0
Country Selection Functional Descriptor(国家选择功能描述符)国家选择功能描述符用于声明设备在哪些国家/地区被批准使用,主机可据此进行合规性判断和配置。
该描述符用于标识通信设备被批准在哪些国家/地区使用。不同国家的网络连接参数可能不同,尤其是在欧洲,不同国家的法律法规也会对设备提出不同要求。
此描述符只能出现在接口描述符的类特定部分,且应只提供给联合(Union)中的主通信类接口。
注意: 该描述符中的国家代码并非国际电话拨号用的国家代码,而是ISO 3166标准中的国家代码。
描述符结构(Table 34)
偏移 | 字段名 | 大小 | 值/类型 | 描述 |
---|---|---|---|---|
0 | bFunctionLength | 1 | 数值 | 此功能描述符的字节数 |
1 | bDescriptorType | 1 | 常量 | CS_INTERFACE 描述符类型 |
2 | bDescriptorSubtype | 1 | 常量 | 国家选择功能描述符子类型 |
3 | iCountryCodeRelDate | 1 | 索引 | 字符串描述符索引,表示ISO 3166国家代码的发布日期,格式为ddmmyyyy(如01012023) |
4 | wCountryCode0 | 2 | 数值 | 第一个支持国家的ISO 3166国家代码(十六进制) |
… | … | … | … | … |
2N+2 | wCountryCodeN-1 | 2 | 数值 | 第N个支持国家的ISO 3166国家代码(十六进制) |
示例(C结构体及二进制示例)
C结构体定义
typedef struct _USB_CDC_COUNTRY_SELECTION_DESCRIPTOR {
uint8_t bFunctionLength; // 描述符长度
uint8_t bDescriptorType; // CS_INTERFACE (0x24)
uint8_t bDescriptorSubtype; // Country Selection subtype (0x07)
uint8_t iCountryCodeRelDate; // 国家代码发布日期字符串描述符索引
uint16_t wCountryCode[1]; // ISO 3166国家代码数组(可变长度)
} USB_CDC_COUNTRY_SELECTION_DESCRIPTOR;
示例数据(假设支持中国(0x156)和美国(0x840),发布日期字符串索引为2)
字节序号 | 值(十六进制) | 含义 |
---|---|---|
0 | 0x08 | bFunctionLength = 8 |
1 | 0x24 | bDescriptorType = CS_INTERFACE |
2 | 0x07 | bDescriptorSubtype = Country Selection |
3 | 0x02 | iCountryCodeRelDate = 2 |
4 | 0x56 | wCountryCode0低字节(中国) |
5 | 0x01 | wCountryCode0高字节(中国) |
6 | 0x40 | wCountryCode1低字节(美国) |
7 | 0x08 | wCountryCode1高字节(美国) |
二进制示例:
08 24 07 02 56 01 40 08
说明
- bFunctionLength:描述符总长度,=4+2×国家数量
- bDescriptorType:固定为0x24(CS_INTERFACE)
- bDescriptorSubtype:国家选择功能描述符为0x07
- iCountryCodeRelDate:字符串描述符索引,内容为发布日期(如”01012023”)
- wCountryCodeN:ISO 3166国家代码(十六进制)