]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/scpi-dmm/protocol.c
rdtech-dps: Use big endian register access for DPS devices
[libsigrok.git] / src / hardware / scpi-dmm / protocol.c
index 8c7b3373dc90f97143d1f473119e178dfae01e58..f413fcd730fbcaad79d58be38fbc2de3ed74d4fd 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;
 }