diff --git a/include/palerain.h b/include/palerain.h index fb69005..26686ff 100644 --- a/include/palerain.h +++ b/include/palerain.h @@ -31,6 +31,7 @@ #define USB_RET_SUCCESS LIBUSB_SUCCESS #define USB_RET_NOT_RESPONDING LIBUSB_ERROR_OTHER #define USB_RET_IO LIBUSB_ERROR_IO +#define USB_RET_NO_DEVICE LIBUSB_ERROR_NO_DEVICE typedef int usb_ret_t; typedef libusb_device_handle *usb_device_handle_t; @@ -51,7 +52,8 @@ usb_ret_t USBBulkUpload(usb_device_handle_t handle, void *data, int len); #define USB_RET_SUCCESS KERN_SUCCESS #define USB_RET_NOT_RESPONDING kIOReturnNotResponding -#define USB_RET_IO kIOReturnNotResponding +#define USB_RET_IO kIOReturnNotReady +#define USB_RET_NO_DEVICE kIOReturnNoDevice typedef IOReturn usb_ret_t; typedef IOUSBInterfaceInterface245 **usb_device_handle_t; diff --git a/src/pongo_helper.c b/src/pongo_helper.c index c48a7c9..161f2ce 100644 --- a/src/pongo_helper.c +++ b/src/pongo_helper.c @@ -129,10 +129,10 @@ fetch_output: bad: if (ret != USB_RET_SUCCESS) { - if (ret == USB_RET_NOT_RESPONDING) - return 0; - if (command != NULL && (!strncmp("boot", command, 4) && ret == USB_RET_IO)) - return 0; + if (command != NULL && (!strncmp("boot", command, 4))) { + if (ret == USB_RET_IO || ret == USB_RET_NO_DEVICE || ret == USB_RET_NOT_RESPONDING) + return 0; + } LOG(LOG_ERROR, "USB error: %s", usb_strerror(ret)); return ret; }