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

Data Structures

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

Defines

#define RNDIS_COMMAND_FAILED   0xC0

Enumerations

enum  RNDIS_Host_EnumerationFailure_ErrorCodes_t {
  RNDIS_ENUMERROR_NoError = 0,
  RNDIS_ENUMERROR_InvalidConfigDescriptor = 1,
  RNDIS_ENUMERROR_NoCompatibleInterfaceFound = 2
}

Functions

uint8_t RNDIS_Host_ConfigurePipes (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, uint16_t ConfigDescriptorSize, void *DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
uint8_t RNDIS_Host_SendKeepAlive (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
uint8_t RNDIS_Host_InitializeDevice (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
uint8_t RNDIS_Host_SetRNDISProperty (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, const uint32_t Oid, void *Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
uint8_t RNDIS_Host_QueryRNDISProperty (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, const uint32_t Oid, void *Buffer, const uint16_t MaxLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3)
bool RNDIS_Host_IsPacketReceived (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)
uint8_t RNDIS_Host_ReadPacket (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, void *Buffer, uint16_t *const PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(3)
uint8_t RNDIS_Host_SendPacket (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo, void *Buffer, const uint16_t PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
static void RNDIS_Host_USBTask (USB_ClassInfo_RNDIS_Host_t *const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1)

Detailed Description

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

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

модуля

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


Define Documentation

#define RNDIS_COMMAND_FAILED   0xC0

Дополнительный код ошибки для функций RNDIS, когда устройство возвращает логическую ошибку команды.


Enumeration Type Documentation

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

Enumerator:
RNDIS_ENUMERROR_NoError 

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

RNDIS_ENUMERROR_InvalidConfigDescriptor 

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

RNDIS_ENUMERROR_NoCompatibleInterfaceFound 

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


Function Documentation

uint8_t RNDIS_Host_ConfigurePipes ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo,
uint16_t  ConfigDescriptorSize,
void *  DeviceConfigDescriptor 
)

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

Note:
Индексы канала, как дано в структуре конфигурации интерфейса, не должны наложиться ни с каким другим интерфейсом, или произойдет повреждение банка канала. Разрывы в выделенных числах канала или непоследовательных индексах в пределах единственного интерфейса позволены, но никакие два интерфейса любого типа не могут чередовать индексы канала.
Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
[in]ConfigDescriptorSizeдлина дескриптора конфигурации подключенного устройства.
[in]DeviceConfigDescriptorуказатель на буфер, содержащий дескриптор конфигурации подключенного устройства.
Returns:
значение из перечисления RNDIS_Host_EnumerationFailure_ErrorCodes_t.
uint8_t RNDIS_Host_InitializeDevice ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo)

Инициализация интерфейса RNDIS у подключенного USB-устройства RNDIS. Должна быть вызвана после того, как сконфигурированы каналы устройства через вызов RNDIS_Host_ConfigurePipes().

Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t или RNDIS_COMMAND_FAILED, если устройство вернуло логическую ошибку команды.
bool RNDIS_Host_IsPacketReceived ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo)

Определяет, ожидает ли в настоящий момент пакет чтения и обработки хостом.

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

Получение свойства RNDIS от подключенного устройства RNDIS.

Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
[in]Oidномер OID получаемого параметра.
[in]Bufferуказатель на место, куда должны быть записаны данные считываемого свойства.
[in]MaxLengthдлина в байтах буфера назначения.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t или RNDIS_COMMAND_FAILED, если устройство вернуло логическую ошибку команды.
uint8_t RNDIS_Host_ReadPacket ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo,
void *  Buffer,
uint16_t *const  PacketLength 
)

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

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
[out]Bufferуказатель на буфер, куда записываются данные пакета.
[out]PacketLengthуказатель, куда будет сохранена длина прочитанного пакета в байтах.
Returns:
значение из перечисления Pipe_Stream_RW_ErrorCodes_t.
uint8_t RNDIS_Host_SendKeepAlive ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo)

Отправляет на устройство команду RNDIS KEEPALIVE, чтобы устройство не вошло в режим сна (standby) после длинного периода неактивности.

Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t или RNDIS_COMMAND_FAILED, если устройство вернуло логическую ошибку команды.
uint8_t RNDIS_Host_SendPacket ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo,
void *  Buffer,
const uint16_t  PacketLength 
)

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

Precondition:
Эта функция должна быть вызвана только когда машина состояния хоста находится в состоянии HOST_STATE_Configured, либо вызов функции потерпит неудачу.
Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
[in]Bufferуказатель на буфер, откуда читаются данные пакета.
[in]PacketLengthдлина в байтах пакета для отправки.
Returns:
значение из перечисления Pipe_Stream_RW_ErrorCodes_t.
uint8_t RNDIS_Host_SetRNDISProperty ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo,
const uint32_t  Oid,
void *  Buffer,
const uint16_t  Length 
)

Установка указанного свойства RNDIS у подключенного устройства RNDIS.

Parameters:
[in,out]RNDISInterfaceInfoуказатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class.
[in]Oidномер OID параметра, который должен быть установлен.
[in]Bufferуказатель на место, откуда должны быть взяты данные для устанавливаемого свойства.
[in]Lengthдлина данных свойства, отправляемых на устройство.
Returns:
значение из перечисления USB_Host_SendControlErrorCodes_t или RNDIS_COMMAND_FAILED, если устройство вернуло логическую ошибку команды.
static void RNDIS_Host_USBTask ( USB_ClassInfo_RNDIS_Host_t *const  RNDISInterfaceInfo) [inline, static]

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

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