* This file is part of the libsigrok project.
*
* Copyright (C) 2015 Hannu Vuolasaho <vuokkosetae@gmail.com>
+ * Copyright (C) 2018 Frank Stettner <frank-stettner@gmx.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/**
- * @file
- * Korad KAxxxxP power supply driver
- * @internal
- */
-
#ifndef LIBSIGROK_HARDWARE_KORAD_KAXXXXP_PROTOCOL_H
#define LIBSIGROK_HARDWARE_KORAD_KAXXXXP_PROTOCOL_H
VELLEMAN_LABPS3005D,
KORAD_KA3005P,
KORAD_KA3005P_0X01,
+ KORAD_KA3005P_0XBC,
+ KORAD_KD3005P,
+ KORAD_KD3005P_V20_NOSP,
+ RND_320K30PV,
+ TENMA_72_2540_V20,
+ TENMA_72_2540_V21,
+ TENMA_72_2535_V21,
+ STAMOS_SLS31_V20,
/* Support for future devices with this protocol. */
};
KAXXXXP_RECALL,
};
-/** Private, per-device-instance driver context. */
struct dev_context {
- /* Model-specific information */
const struct korad_kaxxxxp_model *model; /**< Model information. */
- /* Acquisition settings */
- uint64_t limit_samples;
- uint64_t limit_msec;
- uint64_t num_samples;
- int64_t starttime;
+ struct sr_sw_limits limits;
int64_t req_sent_at;
- gboolean reply_pending;
-
- void *cb_data;
+ GMutex rw_mutex;
- /* Operational state */
float current; /**< Last current value [A] read from device. */
float current_max; /**< Output current set. */
float voltage; /**< Last voltage value [V] read from device. */
gboolean ocp_enabled; /**< Output current protection enabled. */
gboolean ovp_enabled; /**< Output voltage protection enabled. */
- /* Temporary state across callbacks */
- int target; /**< What reply to expect. */
+ int acquisition_target; /**< What reply to expect. */
int program; /**< Program to store or recall. */
- char reply[6];
};
SR_PRIV int korad_kaxxxxp_send_cmd(struct sr_serial_dev_inst *serial,
SR_PRIV int korad_kaxxxxp_read_chars(struct sr_serial_dev_inst *serial,
int count, char *buf);
SR_PRIV int korad_kaxxxxp_set_value(struct sr_serial_dev_inst *serial,
- struct dev_context *devc);
-SR_PRIV int korad_kaxxxxp_query_value(struct sr_serial_dev_inst *serial,
- struct dev_context *devc);
-SR_PRIV int korad_kaxxxxp_get_reply(struct sr_serial_dev_inst *serial,
- struct dev_context *devc);
+ int target, struct dev_context *devc);
+SR_PRIV int korad_kaxxxxp_get_value(struct sr_serial_dev_inst *serial,
+ int target, struct dev_context *devc);
SR_PRIV int korad_kaxxxxp_get_all_values(struct sr_serial_dev_inst *serial,
struct dev_context *devc);
SR_PRIV int korad_kaxxxxp_receive_data(int fd, int revents, void *cb_data);