]> sigrok.org Git - libsigrok.git/commitdiff
korad-kaxxxxp: add quirks flags to table of supported models
authorGerhard Sittig <redacted>
Thu, 15 Sep 2022 20:07:25 +0000 (22:07 +0200)
committerGerhard Sittig <redacted>
Sat, 17 Sep 2022 09:24:38 +0000 (11:24 +0200)
Out of the current set of supported models, the Velleman LABPS3005D is
the only device which requires special OVP enable handling. In future
implementations, more quirks could get identified or other models could
be affected. Add a quirks flags field to the models[] table, so that
other driver code paths need not care about individual models.

This commit only provides the flag. Calling code is not adjusted in this
commit, to reduce the diff size and simplify review. There are a lot of
"no quirks" additions in this commit already.

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

index 1b35b4a58b8168a5e972aac9b6677b26b15812f5..e571dcfd3cdcc25bac4b6aa251c99ff70e90efc1 100644 (file)
@@ -53,55 +53,55 @@ static const double amps_3[] = { 0, 3.1, 0.001, };
 static const double amps_5[] = { 0, 5.1, 0.001, };
 
 static const struct korad_kaxxxxp_model models[] = {
 static const double amps_5[] = { 0, 5.1, 0.001, };
 
 static const struct korad_kaxxxxp_model models[] = {
-       /* Device enum, vendor, model, ID reply, channels, voltage, current */
+       /* Device enum, vendor, model, ID reply, channels, voltage, current, quirks. */
        {KORAD_KA3005P, "Korad", "KA3005P", "KORADKA3005PV2.0",
        {KORAD_KA3005P, "Korad", "KA3005P", "KORADKA3005PV2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        /* Sometimes the KA3005P has an extra 0x01 after the ID. */
        {KORAD_KA3005P_0X01, "Korad", "KA3005P", "KORADKA3005PV2.0\x01",
        /* Sometimes the KA3005P has an extra 0x01 after the ID. */
        {KORAD_KA3005P_0X01, "Korad", "KA3005P", "KORADKA3005PV2.0\x01",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        /* Sometimes the KA3005P has an extra 0xBC after the ID. */
        {KORAD_KA3005P_0XBC, "Korad", "KA3005P", "KORADKA3005PV2.0\xBC",
        /* Sometimes the KA3005P has an extra 0xBC after the ID. */
        {KORAD_KA3005P_0XBC, "Korad", "KA3005P", "KORADKA3005PV2.0\xBC",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KA3005P_V42, "Korad", "KA3005P", "KORAD KA3005P V4.2",
        {KORAD_KA3005P_V42, "Korad", "KA3005P", "KORAD KA3005P V4.2",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KA3005P_V55, "Korad", "KA3005P", "KORAD KA3005P V5.5",
        {KORAD_KA3005P_V55, "Korad", "KA3005P", "KORAD KA3005P V5.5",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD3005P_V20, "Korad", "KD3005P", "KORAD KD3005P V2.0",
        {KORAD_KD3005P_V20, "Korad", "KD3005P", "KORAD KD3005P V2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD3005P_V20_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.0",
        {KORAD_KD3005P_V20_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD3005P_V21_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.1",
        {KORAD_KD3005P_V21_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.1",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD3005P_V41, "Korad", "KD3005P", "KORAD KD3005P V4.1",
        {KORAD_KD3005P_V41, "Korad", "KD3005P", "KORAD KD3005P V4.1",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD3005P_V68, "Korad", "KD3005P", "KORAD KD3005P V6.8",
        {KORAD_KD3005P_V68, "Korad", "KD3005P", "KORAD KD3005P V6.8",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {KORAD_KD6005P, "Korad", "KD6005P", "KORAD KD6005P V2.2",
        {KORAD_KD6005P, "Korad", "KD6005P", "KORAD KD6005P V2.2",
-               1, volts_60, amps_5},
+               1, volts_60, amps_5, 0},
        {RND_320_KA3005P, "RND", "KA3005P", "RND 320-KA3005P V5.5",
        {RND_320_KA3005P, "RND", "KA3005P", "RND 320-KA3005P V5.5",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {RND_320_KD3005P, "RND", "KD3005P", "RND 320-KD3005P V4.2",
        {RND_320_KD3005P, "RND", "KD3005P", "RND 320-KD3005P V4.2",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {RND_320K30PV, "RND", "KA3005P", "RND 320-KA3005P V2.0",
        {RND_320K30PV, "RND", "KA3005P", "RND 320-KA3005P V2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {STAMOS_SLS31_V20, "Stamos Soldering", "S-LS-31", "S-LS-31 V2.0",
        {STAMOS_SLS31_V20, "Stamos Soldering", "S-LS-31", "S-LS-31 V2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {TENMA_72_2535_V21, "Tenma", "72-2535", "TENMA 72-2535 V2.1",
        {TENMA_72_2535_V21, "Tenma", "72-2535", "TENMA 72-2535 V2.1",
-               1, volts_30, amps_3},
+               1, volts_30, amps_3, 0},
        {TENMA_72_2540_V20, "Tenma", "72-2540", "TENMA72-2540V2.0",
        {TENMA_72_2540_V20, "Tenma", "72-2540", "TENMA72-2540V2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {TENMA_72_2540_V21, "Tenma", "72-2540", "TENMA 72-2540 V2.1",
        {TENMA_72_2540_V21, "Tenma", "72-2540", "TENMA 72-2540 V2.1",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {TENMA_72_2540_V52, "Tenma", "72-2540", "TENMA 72-2540 V5.2",
        {TENMA_72_2540_V52, "Tenma", "72-2540", "TENMA 72-2540 V5.2",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {TENMA_72_2550_V2, "Tenma", "72-2550", "TENMA72-2550V2.0",
        {TENMA_72_2550_V2, "Tenma", "72-2550", "TENMA72-2550V2.0",
-               1, volts_60, amps_3},
+               1, volts_60, amps_3, 0},
        {TENMA_72_2710_V66, "Tenma", "72-2710", "TENMA 72-2710 V6.6",
        {TENMA_72_2710_V66, "Tenma", "72-2710", "TENMA 72-2710 V6.6",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        {VELLEMAN_LABPS3005D, "Velleman", "LABPS3005D", "VELLEMANLABPS3005DV2.0",
        {VELLEMAN_LABPS3005D, "Velleman", "LABPS3005D", "VELLEMANLABPS3005DV2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, KORAD_QUIRK_LABPS_OVP_EN},
        {VELLEMAN_PS3005D, "Velleman", "PS3005D", "VELLEMANPS3005DV2.0",
        {VELLEMAN_PS3005D, "Velleman", "PS3005D", "VELLEMANPS3005DV2.0",
-               1, volts_30, amps_5},
+               1, volts_30, amps_5, 0},
        ALL_ZERO
 };
 
        ALL_ZERO
 };
 
index c7b393c94ec60fdd9e8e1fc268965372cd50248b..04d2c05af0311746416fffd44ba3fd79fa3759f5 100644 (file)
@@ -58,6 +58,12 @@ enum {
        /* Support for future devices with this protocol. */
 };
 
        /* Support for future devices with this protocol. */
 };
 
+enum korad_quirks_flag {
+       KORAD_QUIRK_NONE = 0,
+       KORAD_QUIRK_LABPS_OVP_EN = 1UL << 0,
+       KORAD_QUIRK_ALL = (1UL << 1) - 1,
+};
+
 /* Information on single model */
 struct korad_kaxxxxp_model {
        int model_id; /**< Model info */
 /* Information on single model */
 struct korad_kaxxxxp_model {
        int model_id; /**< Model info */
@@ -67,6 +73,7 @@ struct korad_kaxxxxp_model {
        int channels; /**< Number of channels */
        const double *voltage; /**< References: Min, max, step */
        const double *current; /**< References: Min, max, step */
        int channels; /**< Number of channels */
        const double *voltage; /**< References: Min, max, step */
        const double *current; /**< References: Min, max, step */
+       enum korad_quirks_flag quirks;
 };
 
 /* Reply targets */
 };
 
 /* Reply targets */