Настроить блок URB для управляющей передачи
 
|  | Данная функция не реализована в текущей версии библиотеки. Для настройки управляющей передачи используется функция usbd_setup_vendor(). | 
#include <sys/usbdi.h>
                                       
usbd_setup_control( struct usbd_urb *urb, 
                    uint32_t flags,
                    uint16_t request, 
                    uint16_t rtype,
                    uint16_t value, 
                    uint16_t index,
                    void *addr, 
                    uint32_t len );
  
    - urb
- Дескриптор блока URB, возвращаемый функцией usbd_alloc_urb().
- flags
- Принимает следующие значения:    -  URB_DIR_IN   
-  определяет входящую передачу (от устройства к ПК).  
-  URB_DIR_OUT   
-  определяет исходящую передачу (от ПК к устройству).  
-  URB_DIR_NONE   
-  не устанавливать направление передачи.  
 
 Опционально по "ИЛИ" можно добавить:  -  URB_SHORT_XFER_OK   
-  позволяет выполнять короткие передачи.  
 
- request
- Специфичный для устройства запрос.
- rtype
- Тип запроса, принимающий следующее значение:    -  USB_RECIPIENT_DEVICE   -  USB_RECIPIENT_INTERFACE   -  USB_RECIPIENT_ENDPOINT   -  USB_RECIPIENT_OTHER   
 
 Объединенный по "ИЛИ" со значением:  -  USB_TYPE_STANDARD   -  USB_TYPE_CLASS   -  USB_TYPE_VENDOR   
 
- value
- Значение, которое зависит от запроса и используется для передачи параметра устройству.
- index
- Индекс, который зависит от запроса и используется для передачи параметра устройству.
- addr
- Адрес начала передачи, для которого необходимо использовать адрес буфера, выделенного вызовом usbd_alloc().
- len
- Длина передачи данных в байтах.
libusbdi
Функция usbd_setup_control() настраивает блок URB для управляющей (control) передачи.
  
    - EOK
- Успешное завершение.
ЗОСРВ «Нейтрино»
 
-  Нет  
-  Обработчик прерываний   
-  Нет  
-  Обработчик сигналов   
-  Нет  
-  В потоке   
-  Да  
Для гарантии того, что будет использоваться правильный физический адрес, необходимо использовать буфер, выделенный usbd_alloc() параметру addr.
 usbd_descriptor(),  usbd_feature(),  usbd_io(),  usbd_setup_bulk(),  usbd_setup_interrupt(),  usbd_setup_isochronous(),  usbd_setup_vendor(),  usbd_status()
 
Предыдущий раздел:  Библиотека libusbdi