]> sigrok.org Git - libsigrok.git/commitdiff
agilent-dmm: U124xx/U125xx: support 5 more modes.
authorBert Vermeulen <redacted>
Mon, 1 Sep 2014 22:54:23 +0000 (00:54 +0200)
committerBert Vermeulen <redacted>
Mon, 1 Sep 2014 22:55:41 +0000 (00:55 +0200)
This adds support for resistance, capacitance, frequency, continuity,
and temperature.

src/hardware/agilent-dmm/sched.c

index 51bf59f30ef40da6272632836957180abc4bf6f4..044d0a6d690bf15838aef1dae09128878fa0240d 100644 (file)
@@ -388,7 +388,7 @@ static int recv_conf_u123x(const struct sr_dev_inst *sdi, GMatchInfo *match)
                } else if (!strcmp(mstr, "DC")) {
                        devc->cur_mqflags |= SR_MQFLAG_DC;
                } else {
-                       sr_dbg("Unknown third argument.");
+               sr_dbg("Unknown first argument '%s'.", mstr);
                }
                g_free(mstr);
        } else
@@ -400,7 +400,7 @@ static int recv_conf_u123x(const struct sr_dev_inst *sdi, GMatchInfo *match)
 static int recv_conf_u124x_5x(const struct sr_dev_inst *sdi, GMatchInfo *match)
 {
        struct dev_context *devc;
-       char *mstr;
+       char *mstr, *m2;
 
        sr_spew("CONF? response '%s'.", g_match_info_get_string(match));
        devc = sdi->priv;
@@ -429,24 +429,53 @@ static int recv_conf_u124x_5x(const struct sr_dev_inst *sdi, GMatchInfo *match)
                devc->cur_mqflags = 0;
                devc->cur_divider = 0;
        } else if(!strcmp(mstr, "RES")) {
-               if (devc->mode_continuity) {
-                       devc->cur_mq = SR_MQ_CONTINUITY;
-                       devc->cur_unit = SR_UNIT_BOOLEAN;
-               } else {
-                       devc->cur_mq = SR_MQ_RESISTANCE;
-                       devc->cur_unit = SR_UNIT_OHM;
-               }
+               devc->cur_mq = SR_MQ_RESISTANCE;
+               devc->cur_unit = SR_UNIT_OHM;
+               devc->cur_mqflags = 0;
+               devc->cur_divider = 0;
+       } else if(!strcmp(mstr, "CAP")) {
+               devc->cur_mq = SR_MQ_CAPACITANCE;
+               devc->cur_unit = SR_UNIT_FARAD;
                devc->cur_mqflags = 0;
                devc->cur_divider = 0;
+       } else if(!strcmp(mstr, "FREQ")) {
+               devc->cur_mq = SR_MQ_FREQUENCY;
+               devc->cur_unit = SR_UNIT_HERTZ;
+               devc->cur_mqflags = 0;
+               devc->cur_divider = 0;
+       } else if(!strcmp(mstr, "CONT")) {
+               devc->cur_mq = SR_MQ_CONTINUITY;
+               devc->cur_unit = SR_UNIT_BOOLEAN;
+               devc->cur_mqflags = 0;
+               devc->cur_divider = 0;
+       } else if(!strncmp(mstr, "T1", 2) || !strncmp(mstr, "T2", 2)) {
+               devc->cur_mq = SR_MQ_TEMPERATURE;
+               m2 = g_match_info_fetch(match, 2);
+               if (!strcmp(m2, "FAR"))
+                       devc->cur_unit = SR_UNIT_FAHRENHEIT;
+               else
+                       devc->cur_unit = SR_UNIT_CELSIUS;
+               g_free(m2);
+               devc->cur_mqflags = 0;
+               devc->cur_divider = 0;
+       } else if(!strcmp(mstr, "SCOU")) {
+               /*
+                * Switch counter, not supported. Not sure what values
+                * come from FETC in this mode, or how they would map
+                * into libsigrok.
+                */
+       } else if(!strcmp(mstr, "CPER")) {
+               /*
+                * No idea what this is.
+                */
        } else {
-               sr_dbg("Unknown first argument.");
+               sr_dbg("Unknown first argument '%s'.", mstr);
        }
        g_free(mstr);
 
        return SR_OK;
 }
 
-/* At least the 123x and 125x appear to have this. */
 static int recv_conf(const struct sr_dev_inst *sdi, GMatchInfo *match)
 {
        struct dev_context *devc;
@@ -504,6 +533,7 @@ SR_PRIV const struct agdmm_recv agdmm_recvs_u124x[] = {
        { "^([-+][0-9]\\.[0-9]{8}E[-+][0-9]{2})$", recv_fetc },
        { "^\"(VOLT|CURR|RES|CAP) ([-+][0-9\\.E\\-+]+),([-+][0-9\\.E\\-+]+)\"$", recv_conf_u124x_5x },
        { "^\"(VOLT:[ACD]+) ([-+][0-9\\.E\\-+]+),([-+][0-9\\.E\\-+]+)\"$", recv_conf_u124x_5x },
+       { "^\"(T[0-9]:[A-Z]+) ([A-Z]+)\"$", recv_conf_u124x_5x },
        { "^\"(DIOD)\"$", recv_conf },
        { NULL, NULL }
 };