Библиотека LUFA (раннее название MyUSB) версия 101122
Драйвер режима хоста HID Class

Data Structures

struct  USB_ClassInfo_HID_Host_t
 Структура конфигурации и состояния HID Class режима хоста. More...

Defines

#define HID_ERROR_LOGICAL   0x80

Enumerations

enum  HID_Host_EnumerationFailure_ErrorCodes_t {
  HID_ENUMERROR_NoError = 0,
  HID_ENUMERROR_InvalidConfigDescriptor = 1,
  HID_ENUMERROR_NoCompatibleInterfaceFound = 2
}

Functions

uint8_t HID_Host_ConfigurePipes (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo, uint16_t ConfigDescriptorSize, void *DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
uint8_t HID_Host_ReceiveReport (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo, void *Buffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
uint8_t HID_Host_ReceiveReportByID (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo, const uint8_t ReportID, void *Buffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
uint8_t HID_Host_SendReportByID (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo, const uint8_t ReportID, const uint8_t ReportType, void *Buffer, const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4)
bool HID_Host_IsReportReceived (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
uint8_t HID_Host_SetBootProtocol (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
uint8_t HID_Host_SetReportProtocol (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
static void HID_Host_USBTask (USB_ClassInfo_HID_Host_t *const HIDInterfaceInfo)

Detailed Description

зависимости для исходного кода модуля

Следующие файлы должны быть скомпилированы с любым проектом, который использует этот модуль:

модуля

Фреймворк-интерфейс для драйвера режима хоста HID USB Class.


Define Documentation

#define HID_ERROR_LOGICAL   0x80

Код ошибки для некоторых функций хоста HID, показывающий логическую (не аппаратную) ошибку.


Enumeration Type Documentation

Перечисление для возможных кодов ошибки, возвращаемых функцией HID_Host_ConfigurePipes().

Enumerator:
HID_ENUMERROR_NoError 

дескриптор конфигурации обработан успешно.

HID_ENUMERROR_InvalidConfigDescriptor 

устройство возвратило неверный дескриптор конфигурации.

HID_ENUMERROR_NoCompatibleInterfaceFound 

в дескрипторе конфигурации устройства не найден совместимый интерфейс HID.


Function Documentation

uint8_t HID_Host_ConfigurePipes ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo,
uint16_t  ConfigDescriptorSize,
void *  DeviceConfigDescriptor 
)

Подпрограмма конфигурирования интерфейса хоста, для конфигурирования указанного экземпляра интерфейса хоста HID с использованием дескриптора конфигурации, прочитанного от подключенного устройства USB. Эта функция автоматически обновляет переменные состояния экземпляра хоста HID и конфигурирует каналы, необходимые для соединения с интерфейсом, если он найден на устройстве. Должна быть вызвана один раз после того, как стек проведет энумерацию устройства, когда машина хоста перейдет в состояние Addressed (адресовано).

Note:
Индексы канала, как дано в структуре конфигурации интерфейса, не должны наложиться ни с каким другим интерфейсом, или произойдет повреждение банка канала. Разрывы в выделенных числах канала или непоследовательных индексах в пределах единственного интерфейса позволены, но никакие два интерфейса любого типа не могут чередовать индексы канала.

После того, как потоки устройства сконфигурированы, протокол репортов устройства HID должен быть установлен либо через вызов HID_Host_SetBootProtocol(), либо через вызов HID_Host_SetReportProtocol().
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
[in]ConfigDescriptorSizeдлина дескриптора конфигурации подключенного устройства.
[in]DeviceConfigDescriptorуказатель на буфер, содержащий дескриптор конфигурации подключенного устройства.
Returns:
значение из перечисления HID_Host_EnumerationFailure_ErrorCodes_t.
bool HID_Host_IsReportReceived ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo)

Определяет, принят ли репорт HID IN из подключенного устройства по каналу данных IN.

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
Returns:
двоичное true, если репорт принят, иначе false.
uint8_t HID_Host_ReceiveReport ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo,
void *  Buffer 
)

Принимает репорт HID IN от подключенного устройства HID, когда репорт принимается через канал данных HID IN.

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Note:
Буфер назначения должен быть достаточного размера, чтобы принять наибольший по размеру репорт, который может сгенерировать подключенное устройство.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
[in]Bufferбуфер для сохранения информации из принятого репорта.
Returns:
код ошибки из перечисления Pipe_Stream_RW_ErrorCodes_t.
uint8_t HID_Host_ReceiveReportByID ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo,
const uint8_t  ReportID,
void *  Buffer 
)

Принимает репорт HID IN от подключенного устройства, по ID репорта.

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Note:
Когда задан токен времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY, этот метод недоступен.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
[in]ReportIDID принятого репорта, если ControlRequest равен false - для определения ID обрабатываемого репорта.
[in]Bufferбуфер для сохранения информации из принятого репорта.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t.
uint8_t HID_Host_SendReportByID ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo,
const uint8_t  ReportID,
const uint8_t  ReportType,
void *  Buffer,
const uint16_t  ReportSize 
)

Отправляет репорт OUT или FEATURE в подключенное устройство HID, с использованием либо канала OUT, если он доступен, либо канала управления, если канал OUT недоступен.

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Note:
Когда задан токен времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY, параметр ReportID удаляется из списка параметров этой функции.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
[in]ReportIDID репорта для отправки в устройство, или 0, если устройство не использует идентификаторов репорта.
[in]ReportTypeтип репорта для выдачи в устройство, либо HID_REPORT_ITEM_Out, либо HID_REPORT_ITEM_Feature.
[in]Bufferбуфер, содержащий репорт для отправки в подключенное устройство.
[in]ReportSizeразмер репорта в байтах для отправки в подключенное устройство.
Returns:
код ошибки из перечисления USB_Host_SendControlErrorCodes_t, если установлен флаг DeviceUsesOUTPipe в структуре состояния интерфейса, инаяе значение из перечисления Pipe_Stream_RW_ErrorCodes_t.
uint8_t HID_Host_SetBootProtocol ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo)

Переключает протокол репортов подключенного устройства HID в режим протокола загрузки, на тех устройствах, где это поддерживается.

Note:
Когда задан токен времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY, этот метод все еще должен быть вызван для явного переключения подключенного устройства в режим протокола загрузки перед использованием этого протокола.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
Returns:
HID_ERROR_LOGICAL, есл устройство не поддерживает режи протокола загрузки, иначе значение из перечисления USB_Host_SendControlErrorCodes_t.
uint8_t HID_Host_SetReportProtocol ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo)

Переключает протокол репорта подключенного устройства HID на использование стандартного режима репортов. Это также запрашивает и делает парсинг дескриптора репорта устройства HID так, чтобы размер каждого рапорта мог быть определен заранее.

Note:
Независимо от того, используется эта функция или нет, функция обратного вызова CALLBACK_HIDParser_FilterHIDReportItem() из парсера репорта должна быть реализована в коде пользователя.

Когда задан токен времени компиляции HID_HOST_BOOT_PROTOCOL_ONLY, этот метод недоступен.
Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t, если произошла ошибка при запросе дескриптора репорта HID или при устрановке протокола репорта, HID_ERROR_LOGICAL если интефрейс HID не имеет в своей конфигурации верного набора структуры HID_ReportInfo_t, то маска HID_ERROR_LOGICAL, иначе значение из HID_Parse_ErrorCodes_t.
static void HID_Host_USBTask ( USB_ClassInfo_HID_Host_t *const  HIDInterfaceInfo) [inline, static]

Главная задача обработки для указанного интерфейса хоста HID, необходимая для корректной работы интерфейса. Должна часто вызываться из основного цикла программы, перед главной задачей поддержки USB USB_USBTask().

Parameters:
[in,out]HIDInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста HID Class.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines