From: Gerhard Sittig Date: Thu, 15 Sep 2022 20:07:25 +0000 (+0200) Subject: korad-kaxxxxp: add quirks flags to table of supported models X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=c7275098f6db9ba723cc191810e36a6b8a575b12 korad-kaxxxxp: add quirks flags to table of supported models 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. --- diff --git a/src/hardware/korad-kaxxxxp/api.c b/src/hardware/korad-kaxxxxp/api.c index 1b35b4a5..e571dcfd 100644 --- a/src/hardware/korad-kaxxxxp/api.c +++ b/src/hardware/korad-kaxxxxp/api.c @@ -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[] = { - /* 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", - 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", - 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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, {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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, {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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, {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", - 1, volts_60, amps_5}, + 1, volts_60, amps_5, 0}, {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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, {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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, {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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 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", - 1, volts_30, amps_5}, + 1, volts_30, amps_5, 0}, ALL_ZERO }; diff --git a/src/hardware/korad-kaxxxxp/protocol.h b/src/hardware/korad-kaxxxxp/protocol.h index c7b393c9..04d2c05a 100644 --- a/src/hardware/korad-kaxxxxp/protocol.h +++ b/src/hardware/korad-kaxxxxp/protocol.h @@ -58,6 +58,12 @@ enum { /* 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 */ @@ -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 */ + enum korad_quirks_flag quirks; }; /* Reply targets */