]> sigrok.org Git - libsigrok.git/commitdiff
fluke-dmm: make poll timeout configurable
authorBert Vermeulen <redacted>
Mon, 24 Dec 2012 09:40:04 +0000 (10:40 +0100)
committerBert Vermeulen <redacted>
Mon, 24 Dec 2012 10:22:01 +0000 (11:22 +0100)
Defaulted to 1s before, but a simple "QM" command on a 199B in scope
mode takes 1.7s to come through.

hardware/fluke-dmm/api.c
hardware/fluke-dmm/fluke-dmm.h
hardware/fluke-dmm/fluke.c

index 154479ccc25c039c67154bf7883f31562b7c023a..7ac86fc8f49ec361a3225234b55395c11d6860c1 100644 (file)
@@ -50,8 +50,9 @@ SR_PRIV struct sr_dev_driver flukedmm_driver_info;
 static struct sr_dev_driver *di = &flukedmm_driver_info;
 
 static const struct flukedmm_profile supported_flukedmm[] = {
-       { FLUKE_187, "187", 100 },
-       { FLUKE_287, "287", 100 },
+       { FLUKE_187, "187", 100, 1000 },
+       { FLUKE_287, "287", 100, 1000 },
+       { FLUKE_190, "199B", 1000, 3500 },
 };
 
 
index 2dc6af57ed6d81da171193a68ff510494a1900a5..1d77ac857869ab5f8a25b3bc347e2fb8b56bf778 100644 (file)
@@ -44,6 +44,8 @@ struct flukedmm_profile {
        const char *modelname;
        /* How often to poll, in ms. */
        int poll_period;
+       /* If no response received, how long to wait before retrying. */
+       int timeout;
 };
 
 /* Private, per-device-instance driver context. */
index 078ada1d8c1b54b53b116fceb3e3ff9d4febc2fd..eb7cfdc14ab6baedb9fed8a84c7d3c183ce2ad7d 100644 (file)
@@ -346,11 +346,10 @@ SR_PRIV int fluke_receive_data(int fd, int revents, void *cb_data)
        now = g_get_monotonic_time() / 1000;
        elapsed = now - devc->cmd_sent_at;
        /* Send query command at poll_period interval, or after 1 second
-        * has elapsed. This will make it recover from any out-of-sync
-        * or temporary disconnect issues. */
+        * has elapsed. This will make it easier to recover from any
+        * out-of-sync or temporary disconnect issues. */
        if ((devc->expect_response == FALSE && elapsed > devc->profile->poll_period)
-                       || elapsed > 1000) {
-               sr_spew("Sending QM.");
+                       || elapsed > devc->profile->timeout) {
                if (serial_write(devc->serial, "QM\r", 3) == -1)
                        sr_err("Unable to send QM: %s.", strerror(errno));
                devc->cmd_sent_at = now;