X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/3435bdb66e2ea9d3f2be157702b2d116cc45a25f..3d5b8e702ef33cb4b9e54b4cb42de189cadb24e6:/hmcfgusb.c diff --git a/hmcfgusb.c b/hmcfgusb.c index d8a442f..6df2bca 100644 --- a/hmcfgusb.c +++ b/hmcfgusb.c @@ -150,7 +150,7 @@ int hmcfgusb_send_null_frame(struct hmcfgusb_dev *usbdev, int silent) memset(out, 0, sizeof(out)); - err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, out, sizeof(out), &cnt, USB_TIMEOUT); + err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, out, 0, &cnt, USB_TIMEOUT); if (err && (!silent)) { fprintf(stderr, "Can't send null frame: %s\n", usb_strerror(err)); return 0; @@ -393,6 +393,7 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) { struct timeval tv; int usb_event = 0; + int timed_out = 0; int i; int n; int fd_n; @@ -430,6 +431,7 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) return -1; } else if (n == 0) { usb_event = 1; + timed_out = 1; } else { for (fd_n = 0; fd_n < dev->n_pfd; fd_n++) { if (dev->pfd[fd_n].revents) { @@ -461,6 +463,9 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) errno = quit; } + if (timed_out) + errno = ETIMEDOUT; + return -1; }