-
正常情况下,一个USB 设备只能有一个configuration 工作, 要想动态的(on the fly)改变这个设备的功能,可以通过interface alternatesetting 来实现。
-
interface descriptor 可以理解为一群endpoint的头文件,每一个interface代表一个功能。
-
例如一个设备有打印机,扫描仪,传真机三个功能,就应该有三个interface。
-
interface descriptor的 bInterfaceNumber 是从0 开始的,代表interface的序号。
-
例如一个设备有两个interface, interface 1的bInterfaceNumber 就应该是0, interface 2的bInterfaceNumber 就应该是1, 如果这个时候interface 1有一个备选interface, 那么结构就应该是:
interface1: bInterfaceNumber 0 // interface index 是 0
bAlternativeSetting 0 // 默认interfaceinterface 2: bInterfaceNumber 1 // interface index 是 1 bAlternativeSetting 0 // 默认interface bInterfaceNumber 1 // interface index 是 1 bAlternativeSetting 1 // interface 2的 备选 1 bInterfaceNumber 1 // interface index 是 1 bAlternativeSetting 2 // interface 2的 备选 2
Host 在得到这些descriptor后,可以通过setinterface 命令 动态的修改需要选择哪一个interface。