USB设备的配置,接口关系与interface,altsetting关系
大家好。
我进行USB设备的相关学习有些日子了,但是有些地方还是不明白,所有想在这里请教大家。
我知道,一个设备有多个配置,一个配置有多个接口,一个接口有多个端点。
换成英文,就是一个device有多个configuration,一个configuration有多个interface,一个interface有多个endpoint。是这样的吧?
然后,我想问:一个altsetting应该是设备中被选中使用的配置下的一种接口模式吧?例如:我的USB设备选中了0配置下的1接口作为altsetting,那么altsetting的值就应该是1,对吧?
但是,奇怪的是,在使用 get interface 命令进行设备当前altsetting值获取的时候,命令包要求传送一个interface的值,我就及其纳闷了。我的理解是,我就是为了获得这个interface值而传送请求的,命令包居然要我提供该值,真是不可理喻。那么,这里的interface值,是否就应该是配置值呢?
也就是,理论上的 configuration和interface是否应该对应成命令中要传送及获得的interface和altsetting。
我把Get interfaec命令的字段写下:
bmRequestType bRequest wValue wIndex wLength
10000001B GET_INTERFACE Zero Interface One
上述命令包,应该是返回一个字节的数据,该数据为当前被激活的 altsetting。(我的理解一直是当前被激活使用的接口interface)
这里必定是我哪里概念理解错误了,希望懂得的朋友给点指点,由衷感谢。