Запросы устройства (Device Requests) — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Запросы устройства (Device Requests)

2019-06-06 210
Запросы устройства (Device Requests) 0.00 из 5.00 0 оценок
Заказать работу

 

Все устройства должны отвечать на запросы хоста, которые определены для данного устройства производителем и спецификацией USB. Таким образом запросы являются методом действия хоста над свойствами устройства(дескрипторами). С помощью запросов выполняются основные операции над устройствами определенные спецификацией:

1) Dynamic Attachment and Removal (Динамическое присоединение и удаление устройств)

2) Address Assignment (Назначение адреса устройству)

3) Configuration (Конфигурация устройства)

4) Data Transfer (Передача данных)

5) Power Management (Управление питанием):

6) -Power Budgeting (Планирование мощности потребления);

7) -Remote Wakeup (Пробуждение устройства по команде хоста).

8) Request Processing (Выполнение запросов):

-Request Processing Timing (Контроль времени обработки запросов);

-Reset/Resume Recovery Time (Возобновление работы по сигналам Reset/Resume);

-Set Address Processing (Установка адреса устройства);

-Standard Device Requests (Стандартные запросы устройства);

-Class-specific Requests (Специфичные запросы класса устройств).

9) Request Error (Запрос об ошибке). Запросы передаются по нулевому каналу транзакциями SETUP и могут сопровождаться, если необходимо, передачей транзакций DATA (фаза данных). Длина пакета DATA0 всегда равна 8 байтам (в транзакции SETUP).

 

Таблица 6 – Формат данных при запросе (8 байт)

bmRequestType bRequest

wValue

wIndex

wLength

Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06 Byte07
               

 

byte00 (bmRequestType) - битовое поле, тип запроса;

D0..D4 - Получатель 0=Устройство; 1=Интерфейс; 2=Конечная точка; 3=Другой; 4..31=резерв;

D5..D6 -Тип 0=Стандарт; 1=Класс;2=Производитель 3=резерв;

D7 -Направление 0=от хоста к устройству; 1=от устройства к хосту;

byte01 (bRequest) - код запроса, данные зависят от типа запроса.

byte02..03 (wValue) - значение передаваемого параметра (word, где byte03-старшая часть слова, byte02-младшая);

byte04..05 (wIndex) - значение индекса или смещения для передаваемого параметра(word, где byte05-старшая часть слова, byte04-младшая);

byte06..07 (wLength) - число, длина блока данных в байтах передаваемая в фазе данных, т.е. после транзакции SETUP.(word, где byte07-старшая часть слова, byte06-младшая)Если =0, то фаза передачи данных отсутствует и запрос представлен только транзакцией SETUP. Запрос передается в шину USB последовательно начиная с Byte00.Каждый бит байта передается последовательно, начиная с бита-0.

Стандартные запросы (Standard Device Requests) устройства, определённые спецификацией USB 1.1 приведены в таблицах 7-17.

 

Таблица 7 – CLEAR_FEATURE (Очистить возможности)

bmRequestType bRequest wValue wIndex wLength
0x00(к устройству) 0x01(код запроса) Feature Selector 0x0000 0x0000
0x01(к интерфейсу) 0x01(код запроса) Feature Selector Interface 0x0000
0x02(к конечной точке) 0x01(код запроса) Feature Selector Endpoint 0x0000

Этот запрос хоста блокирует специальные возможности устройства, интерфейса или конечной точки указанные в поле wValue.

 

Таблица 8 – GET_CONFIGURATION(Получить конфигурацию)

 

bmRequestType bRequest wValue wIndex wLength
0x80(от устройства) 0x08(код запроса) 0x0000 0x0000 0x0001

 

Этот запрос возвращает хосту текущую конфигурацию устройства. Если ответ 0, то устройство не сконфигурировано

 

Таблица 9 – GET_DESCRIPTOR(Получить дескриптор)

 

bmRequestType bRequest wValue wIndex wLength
0x80(от устройства) 0x06(код запроса) Descriptor Type and Index ID Language Descriptor Length

 

Этот запрос возвращает определённый полем wValue дескриптор, если он существует. Старший байт(byte03) поля wValue указывает тип дескриптора:1=Device; 2=Configuration; 3-String; 4=Inteface; 5=Endpoint.Младший байт(byte02) поля wValue указывает индекс дескриптора.Для строковых дескипторов поле wIndex содержит идентификатор языка по кодировке UNICODE.Поле wLength указывает общую длину дескриптора в байтах.

 

Таблица 10 – GET_INTERFACE(Получить интерфейс)

bmRequestType bRequest wValue wIndex wLength
0x81(от интерфейса) 0x0A(код запроса) 0x0000 Interface 0x0001

 

Это запрос возвращает альтернативную установку для интерфейса, номер которого указан в поле wIndex. В фазе данных хост принимает 1 байт с номером алтернативного интерфейса.

 

Таблица 11 – GET_STATUS(Получить статус)

 

bmRequestType bRequest wValue wIndex wLength
0x80(от устройства) 0x00(код запроса) 0x0000 0x0000 0x0002
0x81(от интерфейса) 0x00(код запроса) 0x0000 Interface 0x0002
0x82(от конечной точки) 0x00(код запроса) 0x0000 Endpoint 0x0002

 

Этот запрос возвращает в фазе данных 2 байта статуса устройства или интерфейса, или конечной точки, указанных в поле wIndex.

 

Таблица 12 – SET_ADRESS(Установить адрес)

 

bmRequestType bRequest wValue wIndex wLength
0x00(к устройству) 0x05(код запроса) Device Adress 0x0000 0x0000

 

Этот запрос устанавливает число, указанное в поле wValue, как адрес прибора в сети.

 

Таблица 13 – SET_CONFIGURATION(Установить конфигурацию)

 

bmRequestType bRequest wValue wIndex wLength
0x00(к устройству) 0x09(код запроса) Configuration Value 0x0000 0x0000

 

Этот запрос устанавливает число, записанное в поле wValue как конфигурацию устройства. Если число 0, то устройство будет не сконфигурированным

 

Таблица 14 – SET_DESCRIPTOR(Установить дескриптор)

 

bmRequestType bRequest wValue wIndex wLength
0x00(к устройству) 0x07(код запроса) Descriptor Type and Index ID Language Descriptor Length

 

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

 

Таблица 15 – SET_FEATURE (Установить возможности)

 

bmRequestType bRequest wValue wIndex wLength
0x00(к устройству) 0x03(код запроса) Feature Selector 0x0000 0x0000
0x01(к интерфейсу) 0x03(код запроса) Feature Selector Interface 0x0000
0x02(к конечной точке) 0x03(код запроса) Feature Selector Endpoint 0x0000

 

Этот запрос включает дополнительные возможности устройства, интерфейса, конечной точки, указанные в поле wValue.

 

Таблица 16 – SET_INTERFACE (Установить интерфейс)

 

bmRequestType bRequest wValue wIndex wLength
0x01(к интерфейсу) 0x0B(код запроса) Alternate Setting Interface 0x0000

 

Этот запрос позволяет интерфейсу, номер которого указан в поле wIndex использовать альтернативные установки с номером, указанным вwValue.

 

Таблица 17 – <sSYNC_FRAME(Синхронизовать кадр)</s

 

bmRequestType bRequest wValue wIndex wLength
0x82(от конечной точки) 0x0C(код запроса) 0x0000 Endpoint 0x0002

 

Этот запрос используется, чтобы установить и затем сообщить кадр синхронизации конечной точке. Параметры запросов: Descriptor Types(Тип дескриптора):1=Device; 2=Configuration; 3-String; 4=Inteface; 5=EndpointFeature Selectors (Выбор возможностей): 1=Device_Remote_Wakeup; 0=Endpoint_HaltInterface (номер интерфейса): целое числоEndpoint (адрес конечной точки): целое число 0..15 Alternate Setting(номер альтернативного интерфейса):целое числоID Language (Идентификатор языка):целое число, идентификатор языка в UNICODE

 

Дескрипторы устройств

 

Дескриптор(Описатель) – это структура данных с определённым форматом, которую использует устройства для того чтобы сообщить о своих атрибутах. Каждый дескриптор начинается с байта, в котором указана общая длина дескриптора, которая следует за байтом, обозначающим тип дескриптора. Каждая конфигурация устройства может многократно использовать различные дескрипторы, образуя реляционные базы данных, что существенно уменьшает количество дескрипторов. В соответствующих местах, дескрипторы содержат ссылки на строковые дескрипторы, которые предоставляют отображаемую информацию, описывающую дескриптор, в удобной для прочтения человеком форме. Включение строковых дескрипторов необязательно. Однако, поля ссылок внутри дескрипторов обязательны. Если устройство не поддерживает строковые дескрипторы, в строковых полях должны быть ссылки, сброшенные в нуль, чтобы указать, что нет доступных строковых дескрипторов. В USB определены следующие стандартные дескрипторы: устройств, конфигурации, интерфейса, конечной точки, строки.

Дескриптор устройства (Device Descriptor). Дескриптор устройства описывает общую информацию относительно устройства USB. Она включает информацию, которая применяется устройством глобально и во всех его конфигурациях (таблица 18). Устройство USB имеет только один дескриптор устройства.

 

Таблица 18 – Дескриптор устройства (18 байт)

 

bLength bDescriptorType

bcdUSB

bDeviceClass bDeviceSubClass bDeviceProtocol bMaxPacketSize0

idVendor

idProductd

bcdDevice

iManufacturer iProduct iSerialNumber bNumConfigurations
Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06 Byte07 Byte08 Byte09 Byte10 Byte11 Byte12 Byte13 Byte14 Byte15 Byte16 Byte17
                                   

 

byte00 (bLength) -число, длина дескриптора в байтах

byte01 (bDescriptorType) -константа, тип дескриптора =1 (Device Descriptor)

byte02..03 (bcdUSB) -число (BCD-формат), номер спецификации USB поддерживаемой устройством

byte04(bDeviceClass) -число, код класса устройства.

bDeviceClass=0 интерфейс сам определяет информацию о классе, различные интерфейсы функционируют независимо.

bDeviceClass=0x01..0xFE интерфейсы определены классом устройств заданым фондом USB.

bDeviceClass=0xFF класс устройства для данных интерфейсов определен производителем.

byte05 (bDeviceSubClass) -число, код подкласса устройства. Заданы фондом USB(за исключением класса 0xFF)

byte06 (bDeviceProtocol) -число, код протокола устройства.

bDeviceClass=0 устройство не использует протоколы определённые классом.

bDeviceClass=0x01..0xFE протоколы определены классом. Заданы фондом USB.

bDeviceClass=0xFF протокол определён производителем.

byte07(bMaxPacketSize0) -число, максимальный размер пакета данных для нулевой точки в байтахbyte08..09 (idVendor) -идентификатор, производителя. Задан фондом USB.

byte10..11 (idProduct) -идентификатор, продукта.Задан производителем устройства.

byte12..13(bcdDevice) -число (BCD-формат), версия устройства

byte14(iManufacturer) -индекс, индекс строкового дескриптора производителя

byte15 (iProduct) -индекс, индекс строкового дескриптора продукта

byte16 (iSerialNumber) - индекс, индекс строкового дескриптора серийного номера устройства

byte17 (bNumConfigurations) - число, количество возможных конфигураций

Дескриптор конфигурации (Configuration Descriptor). Дескриптор конфигурации описывает информацию о конфигурации устройства. Дескриптор содержит поле bConfigurationValue (таблица 19), значение которого используется как параметр в запросе Set Configuration, который заставляет устройство переходить в описанную конфигурацию. Устройства могут иметь несколько дескрипторов конфигураций.

 

Таблица 19 – Дескриптор конфигурации (9 байт)

 

bLength bDescriptorType

wTotalLength

bNumInterfaces bConfigurationValue iConfiguration bmAttributes MaxPower
Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06 Byte07 Byte08
                 

 

byte00(bLength) -число, длина дескриптора в байтах

byte01 (bDescriptorType) -константа, тип дескриптора =2 (Configuration Descriptor) byte02..3(wTotalLength) -число, Общая длина данных в байтах, возвращаемых для этой конфигурации. Включает объединенную длину всех дескрипторов (конфигурации, интерфейса, конечной точки, и класса или определений продавца) возвращенных для этой конфигурации.

byte04 (bNumInterfaces) -число, интерфейсов поддерживаемых этой конфигурацией

byte05 (bConfigurationValue) -число, номер конфигурации, используемый в запросе SetConfiguration, для выбора этой конфигурации.

byte06 (iConfiguration) -индекс, строкового дескриптора описывающего эту конфигурацию

byte07 (bmAttributes) -битовое поле, определяет свойства устройства

D7=1 устроство питается от шины USB

D6=1 устройство имеет независимое питание

D5=1 устройство имеет функцию удалённого пробуждения

D4..D0 резерв (всегда 0)

byte08 (MaxPower) -число, максимальный ток потребления в х2мА (т.е. 50=100мА)

Дескриптор интерфейса (Interface Descriptor). Дескриптор интерфейса описывает набор конечных точек включенных в интерфейс для заданной конфигурации (таблица 20). Дескриптор интерфейса всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor. Дескриптор интерфейса никогда не включает нулевую конечную точку в число конечных точек.

 

Таблица 20 – Дескриптор интерфейса (9 байт)

 

bLength bDescriptorType bInterfaceNumber bAlternateSetting bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06 Byte07 Byte08

 

byte00 (bLength) -число, длина дескриптора в байтах

byte01 (bDescriptorType) -константа, тип дескриптора =4 (Interface Descriptor)

byte02 (bInterfaceNumber) - число, номер интерфейса в массиве параллельных интерфейсов поддерживаемых данной конфигурацией.

byte03 (bAlternateSetting) -число, номер альтернативного интерфейса для интерфейса указанного в bInterfaceNumber

byte04 (bNumEndpoints) -число, количество конечных точек используемых этим интерфейсом (без нулевой точки)

byte05 (bInterfaceClass) - число, код класса интерфейса. bInterfaceClass=0 -зарезервирован для будущей стандартизации bInterfaceClass=0xFF -класс интерфейса определенный производителем bInterfaceClass=0x1..0xFE -класс интерфейса задан фондом USB

byte06 (bInterfaceSubClass) - число, код подкласса интерфейса

byte07(bInterfaceProtocol) -число, код протокола. Эти коды определяются значением полей bInterfaceClass и bInterfaceSubClass. Если интерфейс поддерживает запросы, определяемые классом, этот код определяет протоколы, которые устройство использует как определено спецификацией класса устройства. Если это поле сброшено в 0, устройство не использует протокол, определяемый классом на этом интерфейсе. Если это поле установлено к 0xFF, устройство использует для этого интерфейса протокол, определенный производителем.

byte08 (iInterface) -индекс, строкового дескриптора интерфейса

Дескриптор конечной точки (Endpoint Descriptor). Каждая конечная точка, используемая для интерфейса, имеет собственный дескриптор (таблица 21). Этот дескриптор содержит информацию, требуемую хостом, чтобы определить требования по пропускной способности каждой конечной точки. Дескриптор конечной точки всегда возвращается как часть дескриптора конфигурации. К нему нельзя непосредственно обращаться запросом Get или Set Descriptor. Нулевая точка не имеет дескриптора.

 

 

Таблица 21 – Дескриптор конечной точки (7 байт)

 

bLength bDescriptorType bEndpointAddress bmAttributes

wMaxPacketSize

bInterval
Byte00 Byte01 Byte02 Byte03 Byte04 Byte05 Byte06
             

 

byte00(bLength) -число, длина дескриптора в байтах

byte01 (bDescriptorType) - константа, тип дескриптора =5 (Endpoint Descriptor)

byte02 (bEndpointAddress) -число, адрес конечной точки

Bit0..3 -адрес конечной точки (0..15)

Bit4..6 –резерв

Bit7 -направление передачи 0=OUT; 1=IN

byte03(bmAttributes) - битовое поле атрибутов

Bit0..1 - тип передачи 00=Control; 01=Isochronous; 10=Bulk; 11=Interrupt

Bit2..7 - резервbyte04..05(wMaxPacketSize) - число, максимальная длина пакета данных используемая конечной точкой. Для изохронных конечных точек, это значение используется, чтобы резервировать время шины в кадре.

byte06 (bInterval) -число, Интервал при опросе конечной точки в миллисекундах. Это поле игнорируется для конечных точек Bulk и Control.

Для изохронных конечных точек это поле должно быть установлено в 1.

Для конечных точек прерывания, это поле может иметь значение от 1 до 255.

Дескриптор строки (String Descriptor). Дескрипторы строк являются необязательными. Строковые дескрипторы описывают характеристики устройства текстовыми строками, что удобно для человека (таблица 22). Если устройство не поддерживает строковые дескрипторы, все ссылки к строковым дескрипторам внутри устройства, конфигурации, и дескрипторах интерфейса должны быть сброшены в нуль. При запросе строкового дескриптора, запросчик определяет требуемый язык, используя ID (LANGID) определенный Microsoft Windows UNICODE.В отличии от Windows строка не обязана заканчиваться NULL символом

 

Таблица 22 – Дескриптор строки (более 2 байт)

 

bLength bDescriptorType String
Byte00 Byte01 Byte02..N

 

byte00(bLength) -число, длина дескриптора в байтах

byte01 (bDescriptorType) -константа, тип дескриптора =3 (String Descriptor)

byte02..N (bLength) -строка в UNICODE

 


Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.063 с.