X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/4d0be794ad88966fa3ac1f434a98b77d618d988f..3435bdb66e2ea9d3f2be157702b2d116cc45a25f:/hmcfgusb.c diff --git a/hmcfgusb.c b/hmcfgusb.c index 05f16be..d8a442f 100644 --- a/hmcfgusb.c +++ b/hmcfgusb.c @@ -142,14 +142,17 @@ static libusb_device_handle *hmcfgusb_find() { return NULL; } -int hmcfgusb_send_null_frame(struct hmcfgusb_dev *usbdev) +int hmcfgusb_send_null_frame(struct hmcfgusb_dev *usbdev, int silent) { int err; int cnt; + unsigned char out[0x40]; - err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, NULL, 0, &cnt, USB_TIMEOUT); - if (err) { - fprintf(stderr, "Can't send data: %s\n", usb_strerror(err)); + memset(out, 0, sizeof(out)); + + err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, out, sizeof(out), &cnt, USB_TIMEOUT); + if (err && (!silent)) { + fprintf(stderr, "Can't send null frame: %s\n", usb_strerror(err)); return 0; } @@ -176,7 +179,7 @@ int hmcfgusb_send(struct hmcfgusb_dev *usbdev, unsigned char* send_data, int len } if (done) { - if (!hmcfgusb_send_null_frame(usbdev)) { + if (!hmcfgusb_send_null_frame(usbdev, 0)) { return 0; } } @@ -242,7 +245,7 @@ static void LIBUSB_CALL hmcfgusb_interrupt(struct libusb_transfer *transfer) if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { if (transfer->status != LIBUSB_TRANSFER_TIMED_OUT) { - fprintf(stderr, "Interrupt transfer not completed: %d!\n", transfer->status); + fprintf(stderr, "Interrupt transfer not completed: %s!\n", usb_strerror(transfer->status)); quit = EIO; if (cb_data && cb_data->dev && cb_data->dev->transfer) {