}
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);