]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/korad-kaxxxxp/protocol.h
korad-kaxxxxp: add quirks flags to table of supported models
[libsigrok.git] / src / hardware / korad-kaxxxxp / protocol.h
index 8c86c901f89041659d936883282e41f5b8e0bb16..04d2c05af0311746416fffd44ba3fd79fa3759f5 100644 (file)
 #define KAXXXXP_POLL_INTERVAL_MS 80
 
 enum {
-       VELLEMAN_PS3005D,
-       VELLEMAN_LABPS3005D,
        KORAD_KA3005P,
        KORAD_KA3005P_0X01,
        KORAD_KA3005P_0XBC,
-       KORAD_KD3005P,
+       KORAD_KA3005P_V42,
+       KORAD_KA3005P_V55,
+       KORAD_KD3005P_V20,
        KORAD_KD3005P_V20_NOSP,
+       KORAD_KD3005P_V21_NOSP,
+       KORAD_KD3005P_V41,
+       KORAD_KD3005P_V68,
+       KORAD_KD6005P,
+       RND_320_KA3005P,
+       RND_320_KD3005P,
        RND_320K30PV,
+       STAMOS_SLS31_V20,
+       TENMA_72_2535_V21,
        TENMA_72_2540_V20,
        TENMA_72_2540_V21,
-       TENMA_72_2535_V21,
-       STAMOS_SLS31_V20,
-       KORAD_KD6005P,
+       TENMA_72_2540_V52,
+       TENMA_72_2550_V2,
+       TENMA_72_2710_V66,
+       VELLEMAN_LABPS3005D,
+       VELLEMAN_PS3005D,
        /* 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 */
@@ -55,8 +71,9 @@ 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 */
+       enum korad_quirks_flag quirks;
 };
 
 /* Reply targets */
@@ -112,7 +129,7 @@ struct dev_context {
 SR_PRIV int korad_kaxxxxp_send_cmd(struct sr_serial_dev_inst *serial,
                                        const char *cmd);
 SR_PRIV int korad_kaxxxxp_read_chars(struct sr_serial_dev_inst *serial,
-                                       int count, char *buf);
+                                       size_t count, char *buf);
 SR_PRIV int korad_kaxxxxp_set_value(struct sr_serial_dev_inst *serial,
                                        int target, struct dev_context *devc);
 SR_PRIV int korad_kaxxxxp_get_value(struct sr_serial_dev_inst *serial,