Спецификация USB.Rev1.0

       

Интерфейс


Этот дескриптор описывает специфический интерфейс в случае связанной конфигурации (This descriptor describes a specific interface provided by the associated configuration.)  Конфигурация обеспечивает один или более интерфейсов, каждый с собственными дескрипторами конечной точки, описывающими уникальный набор конечных точек внутри конфигурации. Когда конфигурация поддерживает более чем один интерфейс, конечные точки для специфического интерфейса следуют сразу за дескриптором интерфейса в данных, возвращаемых запросом Get Configuration. Дескриптор интерфейса всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor.

Интерфейс может включать альтернативные установки, которые позволяют изменять конечные точки и-или их характеристики после того, как устройство было сконфигурировано. В настройке по умолчанию для интерфейса, альтернатива всегда установлена в нуль.  Запрос Set Interface используется, чтобы выбрать альтернативную установку или возвратиться к настройке по умолчанию. Запрос Get Interface возвращает выбранную альтернативную установку.

Альтернативные установки позволяют части конфигурации устройства быть измененными, в то время как другие интерфейсы остаются в работе. Если конфигурация имеет альтернативные установки для одного или более интерфейсов, дескриптор отдельного интерфейса и связанные с ним конечные точки включаются в каждую установку.

Если конфигурация устройства обеспечивает один интерфейс с двумя альтернативными установками, дескриптор конфигурации будет сопровождаться дескриптором интерфейса с полями bInterfaceNumber

и bAlternateSetting установленными в нуль и затем дескрипторами конечной точки для этой установки, сопровождаться другим дескриптором интерфейса и связанными с ним дескрипторами конечной точки. (If a device configuration supported a single interface with two alternate settings, the configuration descriptor would be followed by an interface descriptor with the bInterfaceNumber


and bAlternateSetting fields set to zero and then the endpoint descriptors for that setting, followed by another interface descriptor and its associated endpoint descriptors.) В дескрипторе второго интерфейса поле bInterfaceNumber, было бы также установлено в нуль, но поле bAlternateSetting

дескриптора второго интерфейса, было бы установлено в единицу.

Если интерфейс использует только нулевую конечной точки, никакие дескрипторы конечной точки не следуют за дескриптором интерфейса, и интерфейс определяет интерфейс запроса(the interface identifies a request interface), который использует создаваемый по умолчанию канал, присоединенный к нулевой конечной точки. В этом случае, поле bNumEndpoints

должно быть установлено в нуль.

Дескриптор интерфейса никогда не включает нулевую конечную точку в число конечных точек.



Смещение

Поле

Размер

Значение

Описание

0

bLength

1

Number

Размер этого дескриптора в байтах

1

bDescriptorType

1

Constant

 Тип Дескриптора INTERFACE

2

bInterfaceNumber

1

Number

Номер интерфейса. Zero-based value, идентифицирующее индекс в массиве параллельных интерфейсов, обеспечиваемых этой конфигурацией.

3

bAlternateSetting

1

Number

Значение, используемое для выбора альтернативной установки определяемого предшествующим полем интерфейса

4

bNumEndpoints

1

Number

Число конечных точек, используемых этим интерфейсом (не включая нулевую конечную точку).  Если это значение 0, этот интерфейс использует только нулевую конечную точку.

5

bInterfaceClass

1

Class

Код Класса (назначенный USB)

Если это поле сброшено в 0, интерфейс не принадлежит никакому определенному USB классу устройств.

Если это поле установлено в 0xFF, класс интерфейса определяется продавцом.

Все другие значения зарезервированы для назначения USB.

6

bInterfaceSubClass

1

SubClass

Код Подкласса (назначенный USB). Эти коды определяются значением поля bInterfaceClass.

Если поле bInterfaceClass

сброшено в 0, это поле должно также быть сброшено в 0.

Если поле bInterfaceClass

не установлено к 0xFF, все значения зарезервированы для назначения USB.

<


Смещение

Поле

Размер

Значение

Описание

7

bInterfaceProtocol

1

Protocol

Код Протокола (назначенный USB). Эти коды определяются значением полей bInterfaceClass и bInterfaceSubClass. Если интерфейс поддерживает запросы определяемые классом, этот код определяет протоколы, которые устройство использует как определено спецификацией класса устройства.

Если это поле сброшено в 0, устройство не использует протокол определяемый классом на этом интерфейсе.

Если это поле установлено к 0xFF, устройство использует для этого интерфейса протокол определенный продавцом.

8

iInterface

1

Index

Индекс строкового дескриптора, описывающего этот интерфейс


Содержание раздела