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?
A bulk endpoint can send you packets with zero bytes of data, called zero packets. This is not an error condition.