+static int send_mq_ac_dc(struct sr_scpi_dev_inst *scpi, const char *mode,
+ enum sr_mqflag flags)
+{
+ const char *ac_flag, *dc_flag;
+
+ if (flags & ~(SR_MQFLAG_AC | SR_MQFLAG_DC))
+ return SR_ERR_NA;
+
+ ac_flag = (flags & SR_MQFLAG_AC) ? "AC" : "";
+ dc_flag = "";
+ /* Must specify DC measurement when AC flag is not given. */
+ if ((flags & SR_MQFLAG_DC) || !(flags & SR_MQFLAG_AC))
+ dc_flag = "DC";
+
+ return sr_scpi_send(scpi, "%s%s%s", ac_flag, dc_flag, mode);
+}
+
+static int set_mq_volt(struct sr_scpi_dev_inst *scpi, enum sr_mqflag flags)
+{
+ return send_mq_ac_dc(scpi, "V", flags);
+}
+
+static int set_mq_amp(struct sr_scpi_dev_inst *scpi, enum sr_mqflag flags)
+{
+ return send_mq_ac_dc(scpi, "I", flags);
+}
+
+static int set_mq_ohm(struct sr_scpi_dev_inst *scpi, enum sr_mqflag flags)
+{
+ const char *ohm_flag;
+
+ if (flags & ~(SR_MQFLAG_FOUR_WIRE))
+ return SR_ERR_NA;
+
+ ohm_flag = (flags & SR_MQFLAG_FOUR_WIRE) ? "F" : "";
+ return sr_scpi_send(scpi, "OHM%s", ohm_flag);
+}
+
+SR_PRIV int hp_3457a_set_mq(const struct sr_dev_inst *sdi, enum sr_mq mq,
+ enum sr_mqflag mq_flags)