X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fkingst-la2016%2Fprotocol.c;fp=src%2Fhardware%2Fkingst-la2016%2Fprotocol.c;h=596b085c49b4d04c6de45d19a320470ab335be40;hb=462a2f0afbbd80007d6516850f49f4d7fabc62fc;hp=8f08337ad7fa570663d35485c63b23272c7d5350;hpb=0fbb464bdf0951228d4430794263bb48bc668821;p=libsigrok.git 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