]> sigrok.org Git - libsigrok.git/commitdiff
korad-kaxxxxp: factor voltage/current capability out of models[] table
authorGerhard Sittig <redacted>
Thu, 15 Sep 2022 20:02:20 +0000 (22:02 +0200)
committerGerhard Sittig <redacted>
Sat, 17 Sep 2022 09:24:37 +0000 (11:24 +0200)
Move the number literals for supported voltage and current ranges and
their granularity out of the models[] table. Reference the ranges from
the models[] table by symbolic names, such that entries will read as
"a model which supports up to 30V and 5A", which is considered easier
to maintain. It's assumed that only few of these "templates" will be
required, the current set of supported devices gets away with 30V/60V,
and 3A/5A, and is able to express all of their combinations. See the
Korad KD6005, Tenma 72-2535, and Tenma 72-2550 models, which are the
only exceptions from the typical 30V/5A configuration.

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

index ab378609761f0cd1f2dab9abb50030b98792e51d..1b35b4a58b8168a5e972aac9b6677b26b15812f5 100644 (file)
@@ -46,56 +46,62 @@ static const uint32_t devopts[] = {
        SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED | SR_CONF_GET | SR_CONF_SET,
 };
 
        SR_CONF_OVER_VOLTAGE_PROTECTION_ENABLED | SR_CONF_GET | SR_CONF_SET,
 };
 
+/* Voltage and current ranges. Values are: Min, max, step. */
+static const double volts_30[] = { 0, 31, 0.01, };
+static const double volts_60[] = { 0, 61, 0.01, };
+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[] = {
        /* Device enum, vendor, model, ID reply, channels, voltage, current */
        {KORAD_KA3005P, "Korad", "KA3005P", "KORADKA3005PV2.0",
 static const struct korad_kaxxxxp_model models[] = {
        /* Device enum, vendor, model, ID reply, channels, voltage, current */
        {KORAD_KA3005P, "Korad", "KA3005P", "KORADKA3005PV2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        /* 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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        /* 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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KA3005P_V42, "Korad", "KA3005P", "KORAD KA3005P V4.2",
        {KORAD_KA3005P_V42, "Korad", "KA3005P", "KORAD KA3005P V4.2",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KA3005P_V55, "Korad", "KA3005P", "KORAD KA3005P V5.5",
        {KORAD_KA3005P_V55, "Korad", "KA3005P", "KORAD KA3005P V5.5",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD3005P_V20, "Korad", "KD3005P", "KORAD KD3005P V2.0",
        {KORAD_KD3005P_V20, "Korad", "KD3005P", "KORAD KD3005P V2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD3005P_V20_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.0",
        {KORAD_KD3005P_V20_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD3005P_V21_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.1",
        {KORAD_KD3005P_V21_NOSP, "Korad", "KD3005P", "KORADKD3005PV2.1",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD3005P_V41, "Korad", "KD3005P", "KORAD KD3005P V4.1",
        {KORAD_KD3005P_V41, "Korad", "KD3005P", "KORAD KD3005P V4.1",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD3005P_V68, "Korad", "KD3005P", "KORAD KD3005P V6.8",
        {KORAD_KD3005P_V68, "Korad", "KD3005P", "KORAD KD3005P V6.8",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {KORAD_KD6005P, "Korad", "KD6005P", "KORAD KD6005P V2.2",
        {KORAD_KD6005P, "Korad", "KD6005P", "KORAD KD6005P V2.2",
-               1, {0, 61, 0.01}, {0, 5.1, 0.001}},
+               1, volts_60, amps_5},
        {RND_320_KA3005P, "RND", "KA3005P", "RND 320-KA3005P V5.5",
        {RND_320_KA3005P, "RND", "KA3005P", "RND 320-KA3005P V5.5",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {RND_320_KD3005P, "RND", "KD3005P", "RND 320-KD3005P V4.2",
        {RND_320_KD3005P, "RND", "KD3005P", "RND 320-KD3005P V4.2",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {RND_320K30PV, "RND", "KA3005P", "RND 320-KA3005P V2.0",
        {RND_320K30PV, "RND", "KA3005P", "RND 320-KA3005P V2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {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, {0, 31, 0.01}, {0, 3.1, 0.001}},
+               1, volts_30, amps_3},
        {TENMA_72_2540_V20, "Tenma", "72-2540", "TENMA72-2540V2.0",
        {TENMA_72_2540_V20, "Tenma", "72-2540", "TENMA72-2540V2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {TENMA_72_2550_V2, "Tenma", "72-2550", "TENMA72-2550V2.0",
        {TENMA_72_2550_V2, "Tenma", "72-2550", "TENMA72-2550V2.0",
-               1, {0, 61, 0.01}, {0, 3.1, 0.001}},
+               1, volts_60, amps_3},
        {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, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {VELLEMAN_LABPS3005D, "Velleman", "LABPS3005D", "VELLEMANLABPS3005DV2.0",
        {VELLEMAN_LABPS3005D, "Velleman", "LABPS3005D", "VELLEMANLABPS3005DV2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        {VELLEMAN_PS3005D, "Velleman", "PS3005D", "VELLEMANPS3005DV2.0",
        {VELLEMAN_PS3005D, "Velleman", "PS3005D", "VELLEMANPS3005DV2.0",
-               1, {0, 31, 0.01}, {0, 5.1, 0.001}},
+               1, volts_30, amps_5},
        ALL_ZERO
 };
 
        ALL_ZERO
 };
 
index a0cbdca69cffca26bbcfdf1f7f533609ac79c7f5..c7b393c94ec60fdd9e8e1fc268965372cd50248b 100644 (file)
@@ -65,8 +65,8 @@ struct korad_kaxxxxp_model {
        const char *name; /**< Model name */
        const char *id; /**< Model ID, as delivered by interface */
        int channels; /**< Number of channels */
        const char *name; /**< Model name */
        const char *id; /**< Model ID, as delivered by interface */
        int channels; /**< Number of channels */
-       double voltage[3]; /**< Min, max, step */
-       double current[3]; /**< Min, max, step */
+       const double *voltage; /**< References: Min, max, step */
+       const double *current; /**< References: Min, max, step */
 };
 
 /* Reply targets */
 };
 
 /* Reply targets */