]> sigrok.org Git - libsigrok.git/commitdiff
spci-pps: Add profile for Chroma 61604 AC Source
authorAlexandru Gagniuc <redacted>
Thu, 23 Apr 2015 16:39:23 +0000 (09:39 -0700)
committerBert Vermeulen <redacted>
Wed, 29 Apr 2015 20:59:56 +0000 (22:59 +0200)
Only the capabilities which map directly to SCPI commands supported by
sigrok are implemented at this time. This is sufficient to control
the most often used functionality of this AC source

src/hardware/scpi-pps/profiles.c

index 1252234d593b943c31ebf9d5064ca00b2c3931e6..489f5bdb42e2b30c8af1490fb55189013c3fa60c 100644 (file)
@@ -2,6 +2,8 @@
  * This file is part of the libsigrok project.
  *
  * Copyright (C) 2014 Bert Vermeulen <bert@biot.com>
+ * Copyright (C) 2015 Google, Inc.
+ * (Written by Alexandru Gagniuc <mrnuke@google.com> for Google, Inc.)
  *
  * 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
@@ -27,6 +29,7 @@ const char *pps_vendors[][2] = {
        { "RIGOL TECHNOLOGIES", "Rigol" },
        { "HEWLETT-PACKARD", "HP" },
        { "PHILIPS", "Philips" },
+       { "Chroma ATE", "Chroma" },
 };
 
 const char *get_vendor(const char *raw_vendor)
@@ -43,6 +46,46 @@ const char *get_vendor(const char *raw_vendor)
 
 static const uint32_t devopts_none[] = { };
 
+/* Chroma 61600 series AC source */
+static const uint32_t chroma_61604_devopts[] = {
+       SR_CONF_CONTINUOUS | SR_CONF_SET,
+};
+
+static const uint32_t chroma_61604_devopts_cg[] = {
+       SR_CONF_OVER_VOLTAGE_PROTECTION_THRESHOLD | SR_CONF_GET | SR_CONF_SET,
+       SR_CONF_OVER_CURRENT_PROTECTION_THRESHOLD | SR_CONF_GET | SR_CONF_SET,
+       SR_CONF_OUTPUT_VOLTAGE | SR_CONF_GET,
+       SR_CONF_OUTPUT_VOLTAGE_TARGET | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
+       SR_CONF_OUTPUT_CURRENT | SR_CONF_GET,
+       SR_CONF_OUTPUT_ENABLED | SR_CONF_GET | SR_CONF_SET,
+};
+
+const struct channel_spec chroma_61604_ch[] = {
+       { "1", { 0, 300, 0.1 }, { 0, 16, 0.1 } },
+};
+
+const struct channel_group_spec chroma_61604_cg[] = {
+       { "1", CH_IDX(0), PPS_OVP | PPS_OCP },
+};
+
+const struct scpi_command chroma_61604_cmd[] = {
+       { SCPI_CMD_REMOTE, "SYST:REM" },
+       { SCPI_CMD_LOCAL, "SYST:LOC" },
+       { SCPI_CMD_GET_MEAS_VOLTAGE, ":FETC:VOLT:ACDC?" },
+       { SCPI_CMD_GET_MEAS_CURRENT, ":FETC:CURR:AC?" },
+       { SCPI_CMD_GET_MEAS_POWER, ":FETC:POW:AC?" },
+       { SCPI_CMD_GET_VOLTAGE_TARGET, ":SOUR:VOLT:AC?" },
+       { SCPI_CMD_SET_VOLTAGE_TARGET, ":SOUR:VOLT:AC %.1f" },
+       { SCPI_CMD_GET_OUTPUT_ENABLED, ":OUTP?" },
+       { SCPI_CMD_SET_OUTPUT_ENABLE, ":OUTP ON" },
+       { SCPI_CMD_SET_OUTPUT_DISABLE, ":OUTP OFF" },
+       { SCPI_CMD_GET_OVER_VOLTAGE_PROTECTION_THRESHOLD, ":SOUR:VOLT:LIM:AC?" },
+       { SCPI_CMD_SET_OVER_VOLTAGE_PROTECTION_THRESHOLD, ":SOUR:VOLT:LIM:AC %.1f" },
+       /* This is not a current limit mode. It is overcurrent protection */
+       { SCPI_CMD_GET_OVER_CURRENT_PROTECTION_THRESHOLD, ":SOUR:CURR:LIM?" },
+       { SCPI_CMD_SET_OVER_CURRENT_PROTECTION_THRESHOLD, ":SOUR:CURR:LIM %.2f" },
+};
+
 /* Rigol DP800 series */
 static const uint32_t rigol_dp800_devopts[] = {
        SR_CONF_CONTINUOUS | SR_CONF_SET,
@@ -304,6 +347,15 @@ const struct scpi_command philips_pm2800_cmd[] = {
 };
 
 SR_PRIV const struct scpi_pps pps_profiles[] = {
+       /* Chroma 61604 */
+       { "Chroma", "61604", 0,
+               ARRAY_AND_SIZE(chroma_61604_devopts),
+               ARRAY_AND_SIZE(chroma_61604_devopts_cg),
+               ARRAY_AND_SIZE(chroma_61604_ch),
+               ARRAY_AND_SIZE(chroma_61604_cg),
+               ARRAY_AND_SIZE(chroma_61604_cmd),
+               .probe_channels = NULL,
+       },
        /* HP 6632B */
        { "HP", "6632B", 0,
                ARRAY_AND_SIZE(hp_6632b_devopts),