<br />

Added: HEAD

## **TABLES**

### BufferRegion [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=34)*

Buffer region containing data.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `buffer` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#Buffer` | Buffer for data |
| ### 2 | `offset` | `uint64` | Offset into the VMO to start reading or writing. This is relative to the offset passed to RegisterVmos if using vmo_id. |
| ### 3 | `size` | `uint64` | Number of bytes to read/write from/to this buffer region. |

### BulkRequestInfo

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=51)*

Bulk Request Information

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|

### ControlRequestInfo

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=45)*

Control Request Information

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `setup` | `https://fuchsia.dev/reference/fuchsia.hardware.usb.descriptor//https://fuchsia.dev/reference/fuchsia.hardware.usb.descriptor#UsbSetup` | Control Transfer required Setup packet |

### InterruptRequestInfo

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=60)*

Interrupt Request Information

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|

### IsochronousRequestInfo

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=54)*

Isochronous Request Information.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `frame_id` | `uint64` | Frame ID |

### Request [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=76)*

Requests passed over fuchsia.hardware.usb.endpoint.Endpoint.
See fuchsia.hardware.usb.endpoint.Endpoint::QueueRequests for more details.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `data` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#BufferRegion>` | Data. This array is consumed in-order, and allows for scatter/gather semantics across physically non-contiguous regions of a large buffer. |
| ### 2 | `defer_completion` | `bool` | Indicates not to complete this Request when done unless it failed. All Requests up to the next defer_completion == false are responded to as one unit. |
| ### 3 | `information` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#RequestInfo` | Extra information needed for Request. |
| ### 4 | `short` | `bool` | True if this is a short transfer sending less than what the receiver is expecting. Controllers ensure this transfer is terminated by a short packet. Interpreted as false if absent. |

## **UNIONS**

### Buffer [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible) [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=26)*

Data buffer. There are two supported ways data may be conveyed, corresponding to the two
members of the Buffer union:

1. vmo_id: Pre-registered VMO. A driver may preregister VMOs using the fuchsia.hardware.usb.endpoint.Endpoint::RegisterVmos method. These VMOs are saved by the underlying USB driver in correspondence to the given vmo_id. Future Requests may refer to this by the unique vmo_id. Because VMOs are reused across Requests and saved by the underlying driver, each VMO only needs to be pinned/unpinned once.
2. data: A data buffer for data that is not associated with a VMO. The underlying USB driver should allocate its own VMO, copy the data from the buffer, and pin the VMO. This should not be used often and not for large amounts of data.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `vmo_id` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#VmoId` | The ID of a VMO that was previously registered. |
| ### 2 | `data` | `vector<uint8>:1024` | Embedded data buffer to copy data to/from. |

<br />

### RequestInfo [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.usb.request/request.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=63)*

Extra information needed for different types of Requests.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `control` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#ControlRequestInfo` | Control Request Information |
| ### 2 | `bulk` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#BulkRequestInfo` | Bulk Request Information |
| ### 3 | `isochronous` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#IsochronousRequestInfo` | Isochronous Request Information |
| ### 4 | `interrupt` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.usb.request#InterruptRequestInfo` | Interrupt Request Information |

<br />

## **CONSTANTS**

| Name | Value | Type | Description |
|---|---|---|---|
| [MAX_TRANSFER_SIZE](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=13) | `1024` | `uint32` | Limit on the max transfer size of Requests by embedding data (see Buffer::data). Set to 1024 to accommodate typical SuperSpeed USB packet payloads. |

## **ALIASES**

| Name | Value | Description |
|---|---|---|
| [VmoId](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.usb.request/request.fidl;l=9) | `uint64` |   |