From: Gerhard Sittig Date: Thu, 15 Sep 2022 20:02:20 +0000 (+0200) Subject: korad-kaxxxxp: factor voltage/current capability out of models[] table X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=ecd4600bb15fc16d842936c452d4e7d5fb8e12f5 korad-kaxxxxp: factor voltage/current capability out of models[] table 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. --- diff --git a/src/hardware/korad-kaxxxxp/api.c b/src/hardware/korad-kaxxxxp/api.c index ab378609..1b35b4a5 100644 --- a/src/hardware/korad-kaxxxxp/api.c +++ b/src/hardware/korad-kaxxxxp/api.c @@ -46,56 +46,62 @@ static const uint32_t devopts[] = { 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", - 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", - 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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 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", - 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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 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", - 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", - 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", - 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", - 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", - 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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, {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", - 1, {0, 31, 0.01}, {0, 5.1, 0.001}}, + 1, volts_30, amps_5}, ALL_ZERO }; diff --git a/src/hardware/korad-kaxxxxp/protocol.h b/src/hardware/korad-kaxxxxp/protocol.h index a0cbdca6..c7b393c9 100644 --- a/src/hardware/korad-kaxxxxp/protocol.h +++ b/src/hardware/korad-kaxxxxp/protocol.h @@ -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 */ - 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 */