case SR_CONF_LIMIT_MSEC:
return sr_sw_limits_config_get(&devc->limits, key, data);
case SR_CONF_MEASURED_QUANTITY:
- ret = scpi_dmm_get_mq(sdi, &mq, &mqflag, NULL);
+ ret = scpi_dmm_get_mq(sdi, &mq, &mqflag, NULL, NULL);
if (ret != SR_OK)
return ret;
arr[0] = g_variant_new_uint32(mq);
struct sr_scpi_dev_inst *scpi;
struct dev_context *devc;
int ret;
+ const struct mqopt_item *item;
const char *command;
scpi = sdi->conn;
devc = sdi->priv;
ret = scpi_dmm_get_mq(sdi, &devc->start_acq_mq.curr_mq,
- &devc->start_acq_mq.curr_mqflag, NULL);
+ &devc->start_acq_mq.curr_mqflag, NULL, &item);
if (ret != SR_OK)
return ret;
}
SR_PRIV int scpi_dmm_get_mq(const struct sr_dev_inst *sdi,
- enum sr_mq *mq, enum sr_mqflag *flag, char **rsp)
+ enum sr_mq *mq, enum sr_mqflag *flag, char **rsp,
+ const struct mqopt_item **mqitem)
{
struct dev_context *devc;
const char *command;
*flag = 0;
if (rsp)
*rsp = NULL;
+ if (mqitem)
+ *mqitem = NULL;
command = sr_scpi_cmd_get(devc->cmdset, DMM_CMD_QUERY_FUNC);
if (!command || !*command)
*mq = item->mq;
if (flag)
*flag = item->mqflag;
+ if (mqitem)
+ *mqitem = item;
ret = SR_OK;
}
* Get the meter's current mode, keep the response around.
* Skip the measurement if the mode is uncertain.
*/
- ret = scpi_dmm_get_mq(sdi, &mq, &mqflag, &mode_response);
+ ret = scpi_dmm_get_mq(sdi, &mq, &mqflag, &mode_response, &item);
if (ret != SR_OK) {
g_free(mode_response);
return ret;
snprintf(prec_text, sizeof(prec_text),
"%s", fields[count - 1]);
p = prec_text;
+ } else if (!item) {
+ p = NULL;
+ } else if (item->default_precision == NO_DFLT_PREC) {
+ p = NULL;
} else {
- item = scpi_dmm_lookup_mq_number(sdi, mq, mqflag);
- if (!item) {
- p = NULL;
- } else if (item->default_precision == NO_DFLT_PREC) {
- p = NULL;
- } else {
- snprintf(prec_text, sizeof(prec_text),
- "1e%d", item->default_precision);
- p = prec_text;
- }
+ snprintf(prec_text, sizeof(prec_text),
+ "1e%d", item->default_precision);
+ p = prec_text;
}
g_strfreev(fields);
SR_PRIV const struct mqopt_item *scpi_dmm_lookup_mq_text(
const struct sr_dev_inst *sdi, const char *text);
SR_PRIV int scpi_dmm_get_mq(const struct sr_dev_inst *sdi,
- enum sr_mq *mq, enum sr_mqflag *flag, char **rsp);
+ enum sr_mq *mq, enum sr_mqflag *flag, char **rsp,
+ const struct mqopt_item **mqitem);
SR_PRIV int scpi_dmm_set_mq(const struct sr_dev_inst *sdi,
enum sr_mq mq, enum sr_mqflag flag);
SR_PRIV int scpi_dmm_get_meas_agilent(const struct sr_dev_inst *sdi, size_t ch);