Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 40

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 34 35 36 37 38 39 < 40 > 41 42 43 44 45 46 .. 166 >> Следующая

• 0, если запрос обращен к устройству;
• номер интерфейса, если запрос к интерфейсу;
• номер конечной точки, если запрос к конечной точке;
П wLength = 2.
100
Часть II. Внутренняя организация USB
По запросу GETSTATus устройство возвращает 16-разрядное слово состояния, описывающее текущее состояние устройства, интерфейса или конечной точки.
Слово состояния устройства имеет следующие биты: O [15:2] зарезервированы и должны содержать нули;
? [1] — реакция на сигнал пробуждения от шины USB (remote wakeup):
• 0 — устройство игнорирует сигнал пробуждения;
• 1 — устройство реагирует на сигнал пробуждения;
? [0] — режим питания:
• 0 — устройство получает питание от шины USB;
• 1 — устройство получает питание от собственного источника.
Слово состояния интерфейса зарезервировано и содержит нули во всех разрядах.
Разряды слова состояния конечной точки имеют следующие значения:
? [15:1] зарезервированы и должны содержать нули;
? [0] — признак блокировки (halt) конечной точки:
• 0 — конечная точка функционирует нормально;
• 1 — передача данных заблокирована.
Сброс свойства CLEAR_FEATURE
Запрос clear_feature используется для запрета свойства или состояния, указываемого значением поля wValue. Запрос имеет следующие параметры:
? bmRequestType обозначает тип запроса:
• 0000000Ob — запретить свойство устройства;
• 0000000Ib — запретить свойство интерфейса;
• 00000010b — запретить свойство конечной точки;
O bRequest = 1;
? wValue — код свойства;
? windex — адресант запроса:
• 0, если запрос обращен к устройству;
• номер интерфейса, если запрос к интерфейсу;
• номер конечной точки, если запрос к конечной точке;
O wLength = 0.
Тлава 4. Внутренняя организация устройства
101
Спецификация USB определяет три кода свойств:
? О — блокировка конечной точки (endpoint_halt, получатель — конечная точка);
? 1 — разрешить выполнение сигнала пробуждения (device_remote WAKEUр, получатель — устройство);
? 2 — тестовый режим (test_mode, получатель — устройство).
Передача данных по запросу clear_feature не производится. Сброс состояния endpointhalt разблокирует конечную точку; сброс состояния device_remote_wakeup лишает устройство способности реагировать на сигнал пробуждения.
Разрешение свойства SET_FEATURE
Запрос set_feATURE используется для разрешения свойства или состояния, указываемого значением поля wvalue. Запрос имеет следующие параметры:
? bmRequestType обозначает тип запроса:
• 0000000Ob — разрешить свойство устройства;
• 0000000Ib — разрешить свойство интерфейса;
• 00000010b — разрешить свойство конечной точки;
? bRequest = 0x03;
? wvalue — код свойства;
? windex — адресант запроса:
• 0, если запрос обращен к устройству;
• номер интерфейса, если запрос к интерфейсу;
• номер конечной точки, если запрос к конечной точке;
UJ wLength = 0.
Передача данных по запросу set_feature не производится. Установка состояния endpoint_halt блокирует конечную точку; установка состояния device_remote_wakeup позволяет устройству реагировать на сигнал пробуждения.
Задание адреса на шине SET_ADDRESS
Запрос set_address позволяет присвоить устройству новое значение адреса на шине USB. Запрос имеет следующие параметры:
? bmRequestType = 00000000b;
? bRequest = 0x05;
? wVaiue — адрес устройства;
102
Часть II. Внутренняя организация USB
П wlndex = 0; П wLength = 0.
Передача данных при выполнении запроса set_address не производится. Получение дескриптора GET_DESCRIPTOR
Запрос get_deSCRiPTOR позволяет получить дескриптор устройства, дескриптор конфигурации или дескриптор строки. Запрос имеет следующие параметры:
? bmRequestType = 10000000b, 10000001b или 10000010b;
П bRequest = 0x06;
П wValue содержит тип дескриптора в старшем байте (листинг 4.3) и индекс дескриптора в младшем байте (при запросе дескриптора устройства индекс имеет значение 0);
П windex равно 0 для дескриптора устройства или конфигурации, или идентификатору языка для дескриптора строки;
П wLength — размер дескриптора в байтах.
Подробнее формат дескриптора и его получение мы рассмотрим в разд. 4.13. Значение поля bmRequestType зависит от типа запрашиваемого дескриптора:
П ЮООООООЬ — если дескриптор относится к устройству;
П 10000001b — если дескриптор относится к интерфейсу;
П 10000010b — если дескриптор относится к конечной точке.
Дополнительные подробности мы обсудим в разд. 8.4.3.
Передача дескриптора SET_DESCRIPTOR
Запрос set_descriptor позволяет дополнить существующий или добавить новый дескриптор устройства, конфигурации или строки. Запрос имеет следующие параметры:
? bmRequestType = 00000000b, 00000001b или 00000010b; П bRequest = 0x07;
П wValue, wlndex, wLength имєют тє жє значения, что и для
GET_DESCRIPTOR.
В процессе выполнения запроса set_descriptor хост передает устройству дескриптор, тип которого определяется параметрами запроса
гпава 4. Внутренняя организация устройства
103
Получение кода конфигурации GET_CONFIGURATION
По запросу get_confiGURATion устройство выдает код своей текущей конфигурации. Запрос имеет следующие параметры:
Предыдущая << 1 .. 34 35 36 37 38 39 < 40 > 41 42 43 44 45 46 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100