### Method

# GUsb Device control_transfer_async

since: 0.1.0

#### Declaration

    void
    g_usb_device_control_transfer_async (
      GUsbDevice* self,
      GUsbDeviceDirection direction,
      GUsbDeviceRequestType request_type,
      GUsbDeviceRecipient recipient,
      guint8 request,
      guint16 value,
      guint16 idx,
      guint8* data,
      gsize length,
      guint timeout,
      GCancellable* cancellable,
      GAsyncReadyCallback callback,
      gpointer user_data
    )

#### Description

Do an async control transfer.

Available since: 0.1.0

#### Parameters

`direction`

  Type: `GUsbDeviceDirection`

  No description available.

`request_type`

  Type: `GUsbDeviceRequestType`

  No description available.

`recipient`

  Type: `GUsbDeviceRecipient`

  No description available.

`request`

  Type: `guint8`

  No description available.

`value`

  Type: `guint16`

  No description available.

`idx`

  Type: `guint16`

  No description available.

`data`

  Type: An array of `guint8`

  A suitably-sized data buffer for either input or output.

  The length of the array is specified in the `length` argument.
  The data is owned by the caller of the method.

`length`

  Type: `gsize`

  The length field for the setup packet.

`timeout`

  Type: `guint`

  Timeout timeout (in milliseconds) that this function should wait before giving up due to no response being received. For an unlimited timeout, use 0.

`cancellable`

  Type: `GCancellable`

  A `GCancellable`, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.

`callback`

  Type: `GAsyncReadyCallback`

  The function to run on completion.

  The argument can be `NULL`.

`user_data`

  Type: `gpointer`

  The data to pass to `callback`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.