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

 

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

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

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

Идентификатор конфигурации, используемый при вызове
SET_CONFIGURATION ДЛЯ установки
данной конфигурации
Индекс дескриптора строки, описывающей данную конфигурацию
Характеристики кон<
Код мощности, потр ством от шины USB
Листинг 4 6 Д|скрМ|РР конфигурации
JfA.v........і
11 Описание на языке С
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT wTotalLength;
UCHAR bNumlnterfaces;
UCHAR bConfigurationValue;
UCHAR iConfiguration;
UCHAR bmAttributes;
UCHAR MaxPower; } USB_CONFIGURATION_DESCRIPTOR; // Описание на языке Pascal TUsbConfigurationDescriptor = packed record
bLength : BYTE
bDescriptorType : BYTE
wTotalLength : WORD
bNumlnterfaces : BYTE
bConfigurationValue : BYTE
!Configuration : BYTE
гпава 4. Внутренняя организация устройства
111
bmAttributes ' : BYTE; Мах Powe г : BYTE;
End;
Поле bmAttributes представляет собой битовую маску, имеющую следующие значения:
? [7] зарезервирован и должен равняться нулю;
? [6] признак наличия собственного источника питания:
• 0 — устройство получает питание по шине USB;
• 1 — устройство имеет собственный источник питания;
? [5] признак возможности пробуждения устройства по внешнему сигналу:
• 0 — устройство не имеет такой возможности;
• 1 — устройство имеет возможность пробуждения;
? [4:0] зарезервированы и должны содержать нули.
Значение поля MaxPower равно максимальному току в миллиамперах, потребляемому устройством от шины USB, деленному на 2.
Устройство может иметь один или несколько дескрипторов конфигурации в соответствии с количеством возможных конфигураций, указанных в стандартном дескрипторе устройства. Каждая конфигурация имеет один или несколько интерфейсов. Каждый интерфейс имеет ноль или несколько конечных точек.
Каждая конфигурация описывается одним стандартным дескриптором, размер которого составляет 9 байт. Поле bconfigurationvalue является идентификатором конфигурации, описываемой данным дескриптором, и используется при установке конфигурации.
Каждая конфигурация может иметь один или несколько интерфейсов.
Количество ДОСТУПНЫХ Интерфейсов указывается В ПОЛЄ bNumlnterfaces.
Например, ISDN-устройство может иметь конфигурацию с двумя интерфейсами, каждый из которых предоставляет канал по 64 Кбайт/с, либо конфигурацию с одним интерфейсом, но имеющую канал 128 Кбайт/с.
УСТРОЙСТВО МОЖеТ вернуть ДеСКрИПТОр Конфигурации С ПОЛеМ bDescriptionType,
равным other_speed_configuration. Такой дескриптор описывает конфигурацию для HS-режима, если устройство поддерживает этот режим.
Дескриптор интерфейса
Стандартный дескриптор интерфейса (Standard Interface Descriptor) содержит информацию об одном из интерфейсов, доступных при определенной конфигурации устройства. Структура дескриптора интерфейса показана в
112
Часть II. Внутренняя организация USB
табл. 4.5, а соответствующее описание на языках С и Pascal показано в листинге 4.7.
Таблица 4.5. Структура стандартного дескриптора интерфейса
Смещение Поле Размер Описание
0 bLength 1 Размер дескриптора в байтах
1 bDescriptorType 1 Тип дескриптора (USB INTERFACE DESCRIPTOR TYPE)
2 blnterfaceNumber 1 Номер данного интерфейса (нумеруются с 0) в наборе интерфейсов, поддерживаемых в данной конфигурации
3 bAlternateSettmg 1 Альтернативный номер интерфейса
4 bNumEndpomts 1 Число конечных точек для этого интерфейса без учета нулевой конечной точки
5 blnterfaceClass 1 Код класса интерфейса
6 blnterfaceSubClass 1 Код подкласса интерфейса
7 blnterfaceProtocol 1 Код протокола
8 ilnterface 1 Индекс дескриптора строки, описывающей интерфейс
цистинг 4.7. Дескриптор инте^ріса jjjjlr*, /jf^jlll^f*,
Il описание на языке С
typedef struct _USB_INTERFACE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR blnterfaceNumber;
UCHAR bAlternateSettmg;
UCHAR bNumEndpomts;
UCHAR blnterfaceClass;
UCHAR blnterfaceSubClass;
UCHAR blnterfaceProtocol;
UCHAR ilnterface; } USB_INTERFACE_DESCRIPTOR; Il описание на языке Pascal TUsblnterfaceDescriptor = packed record
Глава 4. Внутренняя организация устройства
113
bLength BYTE
bDescriptorType BYTE
blnterfaceNumber BYTE
bAlternateSettmg BYTE
bNumEndpoints BYTE
blnterfaceClass BYTE
blnterfaceSubClass BYTE
blnterfасеProtocol BYTE
!interface BYTE
End;
Размер дескриптора интерфейса всегда составляет 9 байт.
При идентификации и нумерации устройств на шине дескриптор интерфейса может использоваться для определения типа устройства по кодам класса, подкласса и протокола.
Дескриптор интерфейса возвращается устройством при выполнении запроса get_descriptor и нє может быть запрошен или установлен напрямую вызовами get_descriptor ИЛИ set^descriptor.
Устройство может иметь альтернативный набор установок (alternate settings), что позволяет изменять настройки устройства после конфигурирования. По умолчанию всегда устанавливаются обычные настройки интерфейса, а с помощью запроса setinterface могут быть установлены альтернативные настройки или возвращены настройки по умолчанию.
Предыдущая << 1 .. 37 38 39 40 41 42 < 43 > 44 45 46 47 48 49 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100