usbd_io()

Отправить подготовленный блок URB в стек USB

Прототип:

#include <sys/usbdi.h>
int usbd_io( struct usbd_urb *urb,
struct usbd_pipe *pipe,
void (* func)( struct usbd_urb *,
struct usbd_pipe *,
void * ),
void *handle,
uint32_t timeout );

Аргументы:

urb
Указатель на блок URB (USB Request Block).
pipe
Дескриптор канала, полученный функцией usbd_open_pipe().
func
Функция обратного вызова (callback), вызываемая после завершения ввода-вывода, принимающая параметры: блок URB, канал, указатель - дескриптор.
handle
Указатель на пользовательские данные.
timeout
Значение таймаута в миллисекундах или специальные значения:
USBD_TIME_DEFAULT
USBD_TIME_INFINITY

Библиотека:

libusbdi

Описание:

Функция usbd_io() отправляет подготовленный блок URB в стек USB. Блок URB должен быть подготовлен с помощью одной из следующих функций:


Note: В текущей реализации стека USB запросы производителя (vendor requests) выполняются только синхронно, поэтому параметр func функции usbd_io() должен быть установлен в NULL.

Функция usb_io() выполняет фактическую передачу данных в устройство, функции подготовки только настраивают блок URB для передачи данных.

Возвращаемое значение:

EBADF
Некорректный вызов функции usbd_connect().
EINVAL
Некорректный вызов функции usbd_connect().
ENODEV
Устройство было отсоединено.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

usbd_descriptor(), usbd_feature(), usbd_setup_control(), usbd_setup_bulk(), usbd_setup_interrupt(), usbd_setup_isochronous(), usbd_setup_vendor(), usbd_status()




Предыдущий раздел: Библиотека libusbdi