From fad06882fe3305983292dfa34d335ec461761b61 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Thu, 24 Nov 2016 22:30:24 +0000 Subject: halfkay.c: delay now backs off after failure Implemented additional fix from previous commit message. --- halfkay.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'halfkay.c') diff --git a/halfkay.c b/halfkay.c index cfb10ce..6c41971 100644 --- a/halfkay.c +++ b/halfkay.c @@ -40,7 +40,7 @@ enum { HK_USB_VAL = 0x200, TIMEOUT = 2000, TIMEOUT_FIRST = 3000, - TRANS_DELAY = 10000, + TRANS_DELAY = 4000, TRANS_ATTEMPTS = 10, }; @@ -80,11 +80,13 @@ static void usbsendcmd(void *data, size_t size, bool firstxfer) { unsigned int timeout = firstxfer ? TIMEOUT_FIRST : TIMEOUT; int rc, attempt = 0; + useconds_t delay = TRANS_DELAY; do { rc = libusb_control_transfer(hk_usb_hnd, HK_USB_REQTYP, HK_USB_REQ, HK_USB_VAL, 0, data, size, timeout); - usleep(TRANS_DELAY); + usleep(delay); + delay *= 2; } while (rc == LIBUSB_ERROR_PIPE && ++attempt < TRANS_ATTEMPTS); if (rc < 0) -- cgit v1.2.3-54-g00ecf