usbd_connect()

Подключиться к стеку USB

Прототип:

#include <sys/usbdi.h>
int usbd_connect( usbd_connect_parm_t *parm,
struct usbd_connection **connection );

Аргументы:

parm
Параметры подключения к стеку USB.
connection
Дескриптор соединения в случае успешного подключения. Данный дескриптор используется в других функциях для идентификации соединения.

Библиотека:

libusbdi

Описание:

Функция usbd_connect() используется для подключения к стеку USB и для указания функций обработчиков событий присоединения и отсоединения устройства (в структуре usbd_connect_parm_t).

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

EOK
Успешное завершение.
EPROGMISMATCH
Ошибка версионности.
ENOMEM
Не достаточно памяти для внутренних структур подключения.
ESRCH
Сервер стека USB не выполняется.
EACCESS
Недостаточно прав для подключения к стеку USB.
EAGAIN
Ошибка создания асинхронного потока - обработчика.

Примеры:

Драйвер адаптера 3COM Ethernet может подключаться следующим образом:

usbd_device_ident_t interest = { USB_VENDOR_3COM,
USB_PRODUCT_3COM_3C19250,
USBD_CONNECT_WILDCARD };
usbd_funcs_t funcs = { _USBDI_NFUNCS,
insertion,
removal,
NULL };
usbd_connect_parm_t cparms = { NULL,
USB_VERSION,
USBD_VERSION,
0,
argc,
argv,
0,
&interest,
&funcs };
struct usbd_connection *connection;
int error;
error = usbd_connect( &cparms, &connection );

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

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

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

Предостережения:

Функция usb_connect() создает поток, который используется библиотекой для мониторинга стека USB в части подсоединении и отсоединении устройства. Поскольку функции - обработчики подсоединения и отсоединения вызываются этим новым потоком, то необходимо убедиться, что доступ к общим ресурсам, используемым этим потоком и другими потоками драйвера синхронизирован (например, с помощью мьютекса).

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

usbd_connect_parm_t, usbd_device_ident_t, usbd_device_instance_t, usbd_funcs_t, usbd_args_lookup(), usbd_attach(), usbd_detach(), usbd_disconnect()




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