]> sigrok.org Git - libsigrok.git/commitdiff
fluke-dmm: Fix blocking serial write timeout.
authorBert Vermeulen <redacted>
Sat, 4 Oct 2014 08:37:07 +0000 (10:37 +0200)
committerBert Vermeulen <redacted>
Sat, 4 Oct 2014 08:39:11 +0000 (10:39 +0200)
src/hardware/fluke-dmm/api.c
src/hardware/fluke-dmm/fluke-dmm.h
src/hardware/fluke-dmm/fluke.c

index f7c39c85f2f3c541d23ac089530ab7d38ffe38d9..7ece648774f1a20a94c08e7e7e6201f3b710de1a 100644 (file)
@@ -90,7 +90,7 @@ static GSList *fluke_scan(const char *conn, const char *serialcomm)
        while (!devices && retry < 3) {
                retry++;
                serial_flush(serial);
-               if (serial_write_blocking(serial, "ID\r", 3, 0) < 0) {
+               if (serial_write_blocking(serial, "ID\r", 3, SERIAL_WRITE_TIMEOUT_MS) < 0) {
                        sr_err("Unable to send ID string");
                        continue;
                }
@@ -286,7 +286,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data)
        serial_source_add(sdi->session, serial, G_IO_IN, 50,
                        fluke_receive_data, (void *)sdi);
 
-       if (serial_write_blocking(serial, "QM\r", 3, 0) < 0) {
+       if (serial_write_blocking(serial, "QM\r", 3, SERIAL_WRITE_TIMEOUT_MS) < 0) {
                sr_err("Unable to send QM.");
                return SR_ERR;
        }
index d162bdd0e921d7525cb42c1c3ee8b33f9048c492..664d76d95f1b06197626becb161da289dae78da2 100644 (file)
@@ -24,6 +24,9 @@
 
 #define FLUKEDMM_BUFSIZE  256
 
+/* Always USB-serial, 1ms is plenty. */
+#define SERIAL_WRITE_TIMEOUT_MS 1
+
 /* Supported models */
 enum {
        FLUKE_187 = 1,
index 4a1d5c8277256adec20576c90894a6ec553cf010..f86b7d7b17108a7241388188f35ee3b0e4699f54 100644 (file)
@@ -456,7 +456,7 @@ static void handle_line(const struct sr_dev_inst *sdi)
                                        /* Slip the request in now, before the main
                                         * timer loop asks for metadata again. */
                                        n = sprintf(cmd, "QM %d\r", devc->meas_type);
-                                       if (serial_write_blocking(serial, cmd, n, 0) < 0)
+                                       if (serial_write_blocking(serial, cmd, n, SERIAL_WRITE_TIMEOUT_MS) < 0)
                                                sr_err("Unable to send QM (measurement).");
                                }
                        } else {
@@ -525,7 +525,7 @@ SR_PRIV int fluke_receive_data(int fd, int revents, void *cb_data)
         * out-of-sync or temporary disconnect issues. */
        if ((devc->expect_response == FALSE && elapsed > devc->profile->poll_period)
                        || elapsed > devc->profile->timeout) {
-               if (serial_write_blocking(serial, "QM\r", 3, 0) < 0)
+               if (serial_write_blocking(serial, "QM\r", 3, SERIAL_WRITE_TIMEOUT_MS) < 0)
                        sr_err("Unable to send QM.");
                devc->cmd_sent_at = now;
                devc->expect_response = TRUE;