class ControlTransfer

Defined at line 217 of file fidling/gen/sdk/fidl/fuchsia.hardware.usb/fuchsia.hardware.usb/cpp/fidl/fuchsia.hardware.usb/cpp/markers.h

Performs a synchronous USB control transfer (IN or OUT) over endpoint 0.

Replies after the control transaction completes on the bus (and any associated host

controller state updates for standard `SET_CONFIGURATION` or `SET_INTERFACE` requests

finish).

While this method can be used to read descriptors, prefer [`GetDeviceDescriptor`] and

[`GetConfigurationDescriptor`] when reading descriptors.

If `timeout_ns` is 0 or negative, a default 5-second timeout is used (per USB 2.0

Section 9.2.6.4).

* error:

* `ZX_ERR_INVALID_ARGS` if the setup packet length or `write_data` size is invalid.

* `ZX_ERR_TIMED_OUT` if the control transfer does not complete within the timeout.

* `ZX_ERR_IO_REFUSED` if the device returns a STALL handshake.

* `ZX_ERR_IO_NOT_PRESENT` if the device has been disconnected.

* `ZX_ERR_NOT_SUPPORTED` if the server does not support raw control transfers.

Public Members

static const bool kHasClientToServer
static const bool kHasClientToServerBody
static const bool kHasServerToClient
static const bool kHasServerToClientBody
static const bool kHasNonEmptyUserFacingResponse
static const bool kHasDomainError
static const bool kHasFrameworkError
static const uint64_t kOrdinal