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

 

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

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

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 166 >> Следующая

8.6.2. Запрос SET_REPORT
Запрос set_report позволяет хосту передать данные устройству через нулевую конечную точку. Запрос имеет следующие ПОЛЯ
? bmRequestType = 00J 00001b;
? bRequest = set PFPORT (код 0x09);
? wValue — тип репорта и идентификатор (Report ID);
? windex — номер интерфейса;
170
Часть III. Практика программирования
Э wLength — длина репорта; UJ Data — данные репорта.
Значение полей этого запроса такое же, как для запроса get_report. Устройство может игнорировать запросы set_report.
8.6.3. Запрос GETJDLE
Запрос get_idle позволяет хосту прочитать текущее значение длительности для репорта (idle rate). Запрос имеет следующие поля:
? bmRequestType = 10100001b;
? bRequest = get_idle (код 0x02);
? wValue — идентификатор репорта (Report ID) в младшем байте;
? windex — номер интерфейса;
? wLength = 1;
? Data — значение длительности (см. разд. 8.6.4).
8.6.4. Запрос SETJDLE
Запрос set_idle позволяет хосту задать значение длительности (idle rate) для репортов. Запрос имеет следующие поля:
? bmRequestType = 00100001b;
? bRequest = set_idle (код ОхОА);
? wValue — длительность (Idle duration) в старшем байте и идентификатор репорта (Report ID) в младшем байте;
? windex — номер интерфейса;
О wLength = 0.
Величина длительности позволяет управлять передачей репортов в случае отсутствия изменений в передаваемых данных. Нулевое значение длительности означает "бесконечную паузу" (indefinite), в этом случае устройство будет передавать репорты только в случае изменений состояния. Ненулевое значение задает длительность интервала с кратностью 4 мс, в течение которого конечная точка отвечает на запросы пакетами NAK, если в передаваемых данных нет изменений. Спецификация определяет точность выдерживания интервала ±10%.
Если поле Report ID равно нулю, то установка производится для всех репортов, иначе — только для репорта с данным идентификатором.
Для клавиатуры рекомендуется устанавливать интервал 500 мс (это будет означать время ожидания перед началом дублирования символов, repeat
Гпава 8. HID-устройства
171
rate), а для джойстиков и мыши — бесконечный (эти устройства будут передавать данные только в случае изменения состояния).
8.6.5. Запрос GET_PROTOCOL
Запрос get_protocol позволяет хосту прочитать текущее значение выбранного протокола. Запрос имеет следующие поля:
? bmRequestType = 1010000lb;
? bRequest = get_protocol (код 0x03);
? wValue = 0;
? windex — интерфейс;
П wLength = 1;
? Data — тип протокола'
• 0 — загрузочный протокол (boot protocol);
• 1 — обычный протокол (report protocol).
Этот запрос используется только для загрузочных устройств.
8.6.6. Запрос SET_PROTOCOL
Запрос setprotocol позволяет производить переключение между загрузочным протоколом (boot protocol) и обычным протоколом (report protocol) Запрос имеет следующие поля:
? bmRequestType = OOlOOOOlb;
? bRequest = set_protocol (код ОхОВ);
? wvaiue — тип протокола:
• 0 — загрузочный протокол (boot protocol);
• 1 — обычный протокол (report protocol);
? windex — интерфейс;
П wLength = 0.
Этот запрос используется только для загрузочных устройств.
8.7. Инструментальные средства
Для того чтобы помочь в написании HID-устройства USB Форум разработал две программы, распространяемые свободно: HID Descriptor Tool и USB Compliance Tool.
172
Часть 111. Практика программирования
Первая программа (рис. 8.6) позволяет автоматизировать процесс написания дескриптора репорта и проверить его правильность прежде, чем копировать ;го в устройство.
HID Descriptor TooJ (DT) - H:\Tools\HID Descriptor Tool\MOUSE.HID
шш
File Edit Parse Desct iptor About
HID items
Report Descnptot
' ж
USAGE-PAGE ......
USAGEJINIMUH
USAGE_MAXIMUM
DESTGNATOR_INDEX
DESIGNATORJIItIIMUH
D E SIG N ATO RJIAXIM UM
STRING_INDEX
STRIMGJ1INIMUM
STRING Jl AXIH UH
COLLECTION
END_C0LLECTION
INPUT
OUTPUT
FEATURE
LOG ICALJl INIH UH
LOGICAI__HAXIMUM
PHYSICAL JlINIWUM
PHYSICALJ1AXIMUM
UNIT_EXPONENT
UNIT .......
REPORT_SIZt
c>EP0RT_ID
REP0RT_C0UtlT
Manual Entry |
Clear Descriptor
USAGEJ1AGE (Generic Desktop) 05 01
USAGE (Mouse) 09 02
COLLECTION (Application) Al 01
USAGE (Pointer) 09 01
COLLECTION (Physical) Al 00
USAGE_PAGE (Button) 05 09
US^GEJtINIMUM (Button 1) 19 01
USAGEJIAXIMUM (Button 3) 29 03
LOG ICALJl INIM UM (0) 15 00
L0GICALJ1AXIMUM (1) 25 01
REP0RT_C0UNT (3) 95 03
REPORT_SIZE (1) 75 01
INPUT (Data,Var,Abs) 81 02
PEP0RT_C0UMT (1) 95 01
REPORT_SIZE (5) 75 05
INPUT (Cnst,Var,Abs) 81 03
USAGEJ1AGE (Generic Desktop) 05 01
USAGE (>') 09 30
USAGE (Y) 09 31
L0GICALJ1INIMUH (-127) 15 81
L0GICALJ1AXIMUH (127) 25 7F
REPORT_SIZE (8) 75 08
REPQPT_CQUNT (2) 95 02
INPUT (Data, Var, ReI) 81 06
E ND_C0 L L ECTIO N CO
END COLLECTION CO
Рис. 8.6. Программа генерации и проверки дескрипторов репортов
Вторая программа представляет собой набор инструментальных средств, позволяющих выполнить серию основных тестов на любом USB-устройстве, плюс содержит дополнительные тесты для Hl D-устройств, хабов и устройств связи. USB Compliance Tool загружает свой собственный драйвер для испытуемого устройства, с помощью ^которого можно выбрать и послать в устройство стандартный набор запросов.
Предыдущая << 1 .. 54 55 56 57 58 59 < 60 > 61 62 63 64 65 66 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100