X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fmanson-hcs-3xxx%2Fprotocol.h;h=b4441d070658d65f23187a6556492bb2703be536;hb=b5bbc3f1b00d5f3096c6800af4069fb07704d3a9;hp=572d92740d383102fd8233c736bf9f56821fccbc;hpb=b5e926479019bbd08b555102c3112f654bfd69a8;p=libsigrok.git diff --git a/hardware/manson-hcs-3xxx/protocol.h b/hardware/manson-hcs-3xxx/protocol.h index 572d9274..b4441d07 100644 --- a/hardware/manson-hcs-3xxx/protocol.h +++ b/hardware/manson-hcs-3xxx/protocol.h @@ -2,6 +2,7 @@ * This file is part of the libsigrok project. * * Copyright (C) 2014 Uwe Hermann + * Copyright (C) 2014 Matthias Heidbrink * * 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 @@ -18,6 +19,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +/** @file + * Manson HCS-3xxx Series power supply driver + * @internal + */ + #ifndef LIBSIGROK_HARDWARE_MANSON_HCS_3XXX_PROTOCOL_H #define LIBSIGROK_HARDWARE_MANSON_HCS_3XXX_PROTOCOL_H @@ -31,21 +37,36 @@ #define LOG_PREFIX "manson-hcs-3xxx" enum { + MANSON_HCS_3100, + MANSON_HCS_3102, + MANSON_HCS_3104, + MANSON_HCS_3150, MANSON_HCS_3200, MANSON_HCS_3202, MANSON_HCS_3204, + MANSON_HCS_3300, + MANSON_HCS_3302, + MANSON_HCS_3304, + MANSON_HCS_3400, + MANSON_HCS_3402, + MANSON_HCS_3404, + MANSON_HCS_3600, + MANSON_HCS_3602, + MANSON_HCS_3604, }; +/** Information on a single model. */ struct hcs_model { - int model_id; - char *name; - double voltage[3]; /* Min, max, step */ - double current[3]; /* Min, max, step */ + int model_id; /**< Model info */ + char *name; /**< Model name */ + char *id; /**< Model ID, like delivered by interface */ + double voltage[3]; /**< Min, max, step */ + double current[3]; /**< Min, max, step */ }; /** Private, per-device-instance driver context. */ struct dev_context { - struct hcs_model *model; + struct hcs_model *model; /**< Model informaion. */ uint64_t limit_samples; uint64_t limit_msec; @@ -56,14 +77,23 @@ struct dev_context { void *cb_data; - float voltage; - float current; - gboolean cc_mode; + float current; /**< Last current value [A] read from device. */ + float current_max; /**< Output current set. */ + float current_max_device;/**< Device-provided maximum output current. */ + float voltage; /**< Last voltage value [V] read from device. */ + float voltage_max; /**< Output voltage set. */ + float voltage_max_device;/**< Device-provided maximum output voltage. */ + gboolean cc_mode; /**< Device is in constant current mode (otherwise constant voltage). */ + + gboolean output_enabled; /**< Is the output enabled? */ char buf[50]; int buflen; }; +SR_PRIV int hcs_parse_volt_curr_mode(struct sr_dev_inst *sdi, char **tokens); +SR_PRIV int hcs_read_reply(struct sr_serial_dev_inst *serial, int lines, char* buf, int buflen); +SR_PRIV int hcs_send_cmd(struct sr_serial_dev_inst *serial, const char *cmd, ...); SR_PRIV int hcs_receive_data(int fd, int revents, void *cb_data); #endif