]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/scpi-dmm/protocol.c
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / hardware / scpi-dmm / protocol.c
index 8c7b3373dc90f97143d1f473119e178dfae01e58..a13db8415162e6f4ea1b89314997edd28a46eedb 100644 (file)
@@ -150,6 +150,8 @@ SR_PRIV int scpi_dmm_set_mq(const struct sr_dev_inst *sdi,
        ret = sr_scpi_send(sdi->conn, command, mode);
        if (ret != SR_OK)
                return ret;
+       if (item->drv_flags & FLAG_CONF_DELAY)
+               g_usleep(devc->model->conf_delay_us);
 
        return SR_OK;
 }
@@ -171,6 +173,8 @@ SR_PRIV const char *scpi_dmm_get_range_text(const struct sr_dev_inst *sdi)
                return NULL;
        if (!mqitem || !mqitem->scpi_func_setup)
                return NULL;
+       if (mqitem->drv_flags & FLAG_NO_RANGE)
+               return NULL;
 
        scpi_dmm_cmd_delay(sdi->conn);
        ret = sr_scpi_cmd(sdi, devc->cmdset, 0, NULL,
@@ -230,14 +234,17 @@ SR_PRIV int scpi_dmm_set_range_from_text(const struct sr_dev_inst *sdi,
                return ret;
        if (!item || !item->scpi_func_setup)
                return SR_ERR_ARG;
+       if (item->drv_flags & FLAG_NO_RANGE)
+               return SR_ERR_NA;
 
        is_auto = g_ascii_strcasecmp(range, "auto") == 0;
        scpi_dmm_cmd_delay(sdi->conn);
-       ret = sr_scpi_cmd(sdi, devc->cmdset, 0, NULL,
-               is_auto ? DMM_CMD_SETUP_RANGE_AUTO : DMM_CMD_SETUP_RANGE,
-               item->scpi_func_setup, is_auto ? "" : range);
+       ret = sr_scpi_cmd(sdi, devc->cmdset, 0, NULL, DMM_CMD_SETUP_RANGE,
+               item->scpi_func_setup, is_auto ? "AUTO" : range);
        if (ret != SR_OK)
                return ret;
+       if (item->drv_flags & FLAG_CONF_DELAY)
+               g_usleep(devc->model->conf_delay_us);
 
        return SR_OK;
 }
@@ -389,7 +396,7 @@ SR_PRIV int scpi_dmm_get_meas_agilent(const struct sr_dev_inst *sdi, size_t ch)
        if (ret != SR_OK)
                return ret;
        g_strstrip(response);
-       use_double = devc->model->digits > 6;
+       use_double = devc->model->digits >= 6;
        ret = sr_atod_ascii(response, &info->d_value);
        if (ret != SR_OK) {
                g_free(response);