]> sigrok.org Git - libsigrok.git/commitdiff
korad-kaxxxxp: Add workaround for a Korad KA3005P issue.
authorUwe Hermann <redacted>
Fri, 25 Dec 2015 22:20:00 +0000 (23:20 +0100)
committerUwe Hermann <redacted>
Fri, 25 Dec 2015 22:29:35 +0000 (23:29 +0100)
In some situations, the reply to the *IDN? command contains an
additional trailing 0x01 byte for unknown reasons.

This issue seems to be reproducible by changing the voltage using the knobs
on the device, then turning on the output and turning it off again.

The next korad-kaxxxxp scan() operation would contain the trailing 0x01
byte, which would lead to the detection of the device in libsigrok no
longer working until the next power-cycle.

Work around this issue by treating both the ID string with and without
the trailing 0x01 byte as valid.

src/hardware/korad-kaxxxxp/api.c
src/hardware/korad-kaxxxxp/protocol.h

index 4298d730aba9de30c209e6b143c3a0f1775fa2b6..8753b1a55910dafe7ce1907bafbcd69e65c2e649 100644 (file)
@@ -56,6 +56,9 @@ static const struct korad_kaxxxxp_model models[] = {
                "VELLEMANLABPS3005DV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
        {KORAD_KA3005P, "Korad", "KA3005P",
                "KORADKA3005PV2.0", 1, {0, 31, 0.01}, {0, 5, 0.001}},
+       /* Sometimes the KA3005P has an extra 0x01 after the ID. */
+       {KORAD_KA3005P_0X01, "Korad", "KA3005P",
+               "KORADKA3005PV2.0\x01", 1, {0, 31, 0.01}, {0, 5, 0.001}},
        ALL_ZERO
 };
 
@@ -135,7 +138,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                sr_err("Unknown model ID '%s' detected, aborting.", reply);
                return NULL;
        }
-       sr_dbg("Found: %s %s", models[model_id].vendor, models[model_id].name);
+       sr_dbg("Found: %s %s (idx %d, ID '%s').", models[model_id].vendor,
+               models[model_id].name, model_id, models[model_id].id);
 
        /* Init device instance, etc. */
        sdi = g_malloc0(sizeof(struct sr_dev_inst));
index 55dbc4c62a0a74ae80818b7789d42a639087edb5..77c4eb6f7d229a71f58ddb155aa957e743584c07 100644 (file)
@@ -40,6 +40,7 @@ enum {
        VELLEMAN_PS3005D,
        VELLEMAN_LABPS3005D,
        KORAD_KA3005P,
+       KORAD_KA3005P_0X01,
        /* Support for future devices with this protocol. */
 };