Дом каркасный стоимость купить каркасныи дом rublbrus.ru.
В USB принята иерархия дескрипторов, описывающих все свойства устройств. Стандартные дескрипторы USB начинаются с байта длины дескриптора, за которым следует байт, определяющий тип дескриптора.
Дескрипторы от устройств хост получает по запросам Get_Descriptor, указав тип дескриптора. Таким способом можно явно запросить дескриптор устройства (и квалификатор), дескриптор конфигурации (для текущей и иной скорости) и дескриптор строки (а также дескриптор OTG). Дескрипторы интерфейсов и конечных точек по отдельности не адресуются, они пристраиваются «хвостом» к дескриптору конфигурации. Возможность чтения всех имеющихся дескрипторов обязательна для всех устройств, дополнительно может поддерживаться и запись дескрипторов (запросом Set_Descriptor). Положительный ответ устройства на транзакцию записи дескриптора означает, что он принят и устройство будет подчиниться его свойствам.
По запросу дескриптора конфигурации устройство выдает целую цепочку дескрипторов, начинающуюся с собственно дескриптора конфигурации. За ней для каждого доступного интерфейса следует дескриптор первичного интерфейса и его конечных точек, за которым следуют все альтернативные варианты со своими конечными точками. Общая длина всего описания конфигурации заранее не известна, она указывается в поле wTotalLength дескриптора конфигурации. Так что для получения конфигурации сначала выполняют запрос, указав длину собственно дескриптора конфигурации (9, хотя достаточно и 4), а потом его повторяют с длиной, прочитанной из данного поля.
В приведенных ниже таблицах и описаниях перед мнемоническими названиями полей префикс b означает байт, w — двухбайтное слово, bm — битовую карту, i — целое число (однобайтный индекс), bcd — неупакованный BCD-формат, id — идентификатор (не число). Отметим, что в пакетах слово передается младшим байтом вперед, так что обращение к слову, размещенному в памяти хоста, будет естественным для процессоров x86 (младший байт по меньшему адресу) и не требует перестановки байтов.
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Длина дескриптора (18) |
1 | bDescriptorType | 1 | Тип дескриптора (1) |
2 | bcdUSB | 2 | Версия спецификации USB в BCD-формате (0200h означает USB 2.0) |
4 | bDeviceClass | 1 | Код класса устройства |
5 | bDeviceSubClass | 1 | Код подкласса устройства |
6 | bDeviceProtocol | 1 | Код подкласса устройства |
7 | bMaxPacketSize0 | 1 | Максимальный размер пакета для EP0 (8, 16, 32 или 64) |
8 | idVendor | 2 | Идентификатор производителя (Vendor ID) |
10 | idProduct | 2 | Идентификатор продукта (Product ID) |
12 | bcdDevice | 2 |
Версия устройства в BCD-формате |
14 | iManufacturer | 1 | Индекс строкового дескриптора производителя |
15 | iProduct | 1 | Индекс строкового дескриптора продукта |
16 | iSerialNumber | 1 | Индекс строкового дескриптора серийного номера |
17 | bNumConfigurations | 1 | Число возможных конфигураций устройства на данной скорости |
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Длина дескриптора (10) |
1 | bDescriptorType | 1 | Тип дескриптора (10) |
2 | bcdUSB | 2 | Версия спецификации USB в BCD-формате (0200h означает USB 2.0) |
4 | bDeviceClass | 1 | Код класса устройства |
5 | bDeviceSubClass | 1 | Код подкласса устройства |
6 | bDeviceProtocol | 1 | Код подкласса устройства |
7 | bMaxPacketSize0 | 1 | Максимальный размер пакета для EP0 на иной скорости |
8 | bNumConfigurations | 1 | Число возможных конфигураций устройства на иной скорости |
9 | bReserved | 1 | Резерв (0) |
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Размер данного дескриптора (9) |
1 | bDescriptorType | 1 | Тип дескриптора (2 или 7) |
2 | wTotalLength | 2 | Общее число байтов полного описания данной конфигурации |
4 | bNumInterfaces | 1 | Число поддерживаемых интерфейсов |
5 | bConfigurationValue | 1 | Номер конфигурации |
6 | iConfiguration | 1 | Индекс строкового дескриптора конфигурации |
8 | bmAttributes | 1 | Атрибуты (характеристики конфигурации: D7: резерв (1) D6: Selfpowered — возможность автономного питания D5: Remote Wakeup — способность генерации удаленного пробуждения D4...0: резерв (0) |
9 | bMaxPower | 1 | Максимальный ток потребления от шины в рабочем режиме в единицах по 2 мА |
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Размер данного дескриптора (9) |
1 | bDescriptorType | 1 | Тип дескриптора (4) |
2 | bInterfaceNumber | 1 | Номер интерфейса |
3 | bAlternateSetting | 1 | Номер альтернативной установки |
4 | bNumEndpoints | 1 | Число конечных точек, используемых интерфейсом (исключая EP0) |
5 | bInterfaceClass | 1 | Класс интерфейса |
6 | bInterfaceSubClass | 1 | Подласс интерфейса |
7 | bInterfaceProtocol | 1 | Код протокола |
8 | iInterface | 1 | Индекс строкового дескриптора интерфейса |
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Размер дескриптора (7) |
1 | bDescriptorType | 1 | Тип дескриптора (5) |
2 | bEndpointAddress | 1 | Адрес точки: Биты [3:0] — номер точки; Биты[6:4] — резерв (0); Бит 7 — направление (игнорируется для EP0): 0 = OUT, 1 = IN |
3 | bmAttributes | 1 | Атрибуты точки: Биты [1:0] — тип точки: 00 = Control, 01 = Isochronous, 10 = Bulk, 11 = Interrupt; Биты [5:2] используются только для изохронных точек, для остальных резерв (0): Биты [3:2] — тип синхронизации: 00 = нет синхронизации, 01 = асинхронная, 10 = адаптивная, 11 = синхронная; Биты [5:4] — тип использования: 00 = данные, 01 = обратная связь, 10 = данные с предоставлением неявной обратной связи, 11 = резерв |
4 | wMaxPacketSize | 2 | Биты [10:0] — максимальный размер пакета; Биты [12:11] — число дополнительных транзакций в микрокадре, только для широкополосных точек, для остальных — резерв (0); Биты [15:13] — резерв (0) |
6 | bInterval | 1 | Для точек периодических транзакций — интервал обслуживания (см. главу 11), для HSточек непериодического вывода — допустимая частота посылки NAK |
Смещение | Поле | Длина | Содержание |
0 | bLength | 1 | Размер дескриптора (N+2) |
1 | bDescriptorType | 1 | Тип дескриптора (3) |
2 | bString | N | Строка байтов |