Why Does `libusb_bulk_transfer' Return 0?

1k views Asked by At

I am using libusb-1.0. Sometimes when I call:

    int rc = libusb_bulk_transfer(handle_,
                                  EP_IN_ADDR,
                                  (unsigned char *)buf_,
                                  64,
                                  &read_,
                                  0);

it returns rc = 0 (no error) and read_ = 0 (zero number of bytes received). But I have specified infinite timeout (last argument), so isn't `libusb_bulk_transfer' supposed to block until I have some data?

1

There are 1 answers

1
Turbo J On BEST ANSWER

Sometimes, it returns rc = 0 (no error) and read_ == 0 (zero number of bytes received).

A bulk endpoint can send you packets with zero bytes of data, called zero packets. This is not an error condition.