]> sigrok.org Git - libsigrok.git/commitdiff
hameg-hmo: Also start reading on timeout (workaround for USBTMC)
authorStefan Brüns <redacted>
Sun, 17 Apr 2016 17:14:27 +0000 (19:14 +0200)
committerUwe Hermann <redacted>
Sat, 23 Apr 2016 15:09:52 +0000 (17:09 +0200)
scpi_serial generate an POLLIN event after the requested data is returned
by the instrument. For USBTMC it is necessary to
1. send an REQUEST_DEV_DEP_MSG_IN request
2. submit an USB bulk read transfer asynchronously.

Using the synchronous libusb_bulk_read() does not generate an POLLIN event.

Solving this properly needs major surgery in spci_usbtmc_libusb.

src/hardware/hameg-hmo/protocol.c

index 9d32dc67edfe3656cd4a921462e295f4ab396cbe..bd2174a746cd6949759977e6bd0e8fcf96e1069a 100644 (file)
@@ -743,8 +743,12 @@ SR_PRIV int hmo_receive_data(int fd, int revents, void *cb_data)
        if (!(devc = sdi->priv))
                return TRUE;
 
+       /* Although this is correct in general, the USBTMC libusb implementation
+        * currently does not generate an event prior to the first read. Often
+        * it is ok to start reading just after the 50ms timeout. See bug #785.
        if (revents != G_IO_IN)
                return TRUE;
+       */
 
        ch = devc->current_channel->data;