]> git.zerfleddert.de Git - hmcfgusb/blobdiff - hmcfgusb.c
revert null frame to zero length
[hmcfgusb] / hmcfgusb.c
index d8a442f690a04bba9d368c4c4340b54311e2e64b..6df2bcaa327ed19576ec6fb4667cece08ec568ed 100644 (file)
@@ -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;
 }
 
Impressum, Datenschutz