struct libusb_transfer

Overview

The generic USB transfer structure. Moreā€¦

#include <libusb.h>

struct libusb_transfer {
    // fields

    libusb_device_handle* dev_handle;
    uint8_t flags;
    unsigned char endpoint;
    unsigned char type;
    unsigned int timeout;
    enum libusb_transfer_status status;
    int length;
    int actual_length;
    libusb_transfer_cb_fn callback;
    void* user_data;
    unsigned char* buffer;
    int num_iso_packets;
    struct libusb_iso_packet_descriptor iso_packet_desc[0];
};

Detailed Documentation

The generic USB transfer structure.

The user populates this structure and then submits it in order to request a transfer. After the transfer has completed, the library populates the transfer with the results and passes it back to the user.

Fields

libusb_device_handle* dev_handle

Handle of the device that this transfer will be submitted to.

uint8_t flags

A bitwise OR combination of libusb_transfer_flags.

unsigned char endpoint

Address of the endpoint where this transfer will be sent.

unsigned char type

Type of the endpoint from libusb_transfer_type.

unsigned int timeout

Timeout for this transfer in millseconds.

A value of 0 indicates no timeout.

enum libusb_transfer_status status

The status of the transfer.

Read-only, and only for use within transfer callback function.

If this is an isochronous transfer, this field may read COMPLETED even if there were errors in the frames. Use the status field in each packet to determine if errors occurred.

int length

Length of the data buffer.

int actual_length

Actual length of data that was transferred.

Read-only, and only for use within transfer callback function. Not valid for isochronous endpoint transfers.

libusb_transfer_cb_fn callback

Callback function.

This will be invoked when the transfer completes, fails, or is cancelled.

void* user_data

User context data to pass to the callback function.

unsigned char* buffer

Data buffer.

int num_iso_packets

Number of isochronous packets.

Only used for I/O with isochronous endpoints.

struct libusb_iso_packet_descriptor iso_packet_desc[0]

Isochronous packet descriptors, for isochronous transfers only.