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
зависимости для исходного кода модуля
Следующие файлы должны быть скомпилированы с любым проектом, который использует этот модуль:
- LUFA/Drivers/USB/Class/Host/RNDIS.c (Имя модуля исходного кода для makefile: LUFA_SRC_USBCLASS)
модуля
Фреймворк-интерфейс для драйвера режима хоста 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.
Инициализация интерфейса RNDIS у подключенного USB-устройства RNDIS. Должна быть вызвана после того, как сконфигурированы каналы устройства через вызов RNDIS_Host_ConfigurePipes().
- Parameters:
-
[in,out] | RNDISInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class. |
- Returns:
- значение из перечисления USB_Host_SendControlErrorCodes_t или RNDIS_COMMAND_FAILED, если устройство вернуло логическую ошибку команды.
Определяет, ожидает ли в настоящий момент пакет чтения и обработки хостом.
- 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.
Отправляет на устройство команду 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, если устройство вернуло логическую ошибку команды.
Главная задача обработки для указанного интерфейса хоста RNDIS, необходимая для корректной работы интерфейса. Должна часто вызываться в главном цикле программы, перед главной задачей поддержки USB USB_USBTask().
- Parameters:
-
[in,out] | RNDISInterfaceInfo | указатель на структуру, содержащую конфигурацию и состояние хоста RNDIS Class. |