From: Gerhard Sittig Date: Sun, 20 Feb 2022 10:36:43 +0000 (+0100) Subject: kingst-la2016: stop acquisition when USB device was lost X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=462a2f0afbbd80007d6516850f49f4d7fabc62fc;p=libsigrok.git kingst-la2016: stop acquisition when USB device was lost Check for the condition when the USB device has gone away in the middle of getting communicated to. Terminate acquisition in that case, instead of trying to continue. --- diff --git a/src/hardware/kingst-la2016/protocol.c b/src/hardware/kingst-la2016/protocol.c index 8f08337a..596b085c 100644 --- a/src/hardware/kingst-la2016/protocol.c +++ b/src/hardware/kingst-la2016/protocol.c @@ -1515,15 +1515,22 @@ static void LIBUSB_CALL receive_transfer(struct libusb_transfer *transfer) { struct sr_dev_inst *sdi; struct dev_context *devc; - gboolean was_cancelled; + gboolean was_cancelled, device_gone; int ret; sdi = transfer->user_data; devc = sdi->priv; was_cancelled = transfer->status == LIBUSB_TRANSFER_CANCELLED; + device_gone = transfer->status == LIBUSB_TRANSFER_NO_DEVICE; sr_dbg("receive_transfer(): status %s received %d bytes.", libusb_error_name(transfer->status), transfer->actual_length); + if (device_gone) { + sr_warn("Lost communication to USB device."); + devc->download_finished = TRUE; + return; + } + /* * Implementation detail: A USB transfer timeout is not fatal * here. We just process whatever was received, empty input is