From: Alexandru Gagniuc <mrnuke@localhost>

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 | 58 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/src/hardware/scpi-pps/profiles.c b/src/hardware/scpi-pps/profiles.c
index 50d7d93..95555d8 100644
--- a/src/hardware/scpi-pps/profiles.c
+++ b/src/hardware/scpi-pps/profiles.c
@@ -2,6 +2,8 @@
  * This file is part of the libsigrok project.
  *
  * Copyright (C) 2014 Bert Vermeulen <b...@biot.com>
+ * Copyright (C) 2015 Google, Inc.
+ * (Written by Alexandru Gagniuc <mrn...@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
@@ -26,6 +28,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)
@@ -42,6 +45,52 @@ const char *get_vendor(const char *raw_vendor)
 
 static const uint32_t devopts_none[] = { };
 
+/* Chroma 61600 series AC sources */
+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 },
+};
+
+/*
+ * NOTE: This includes a large subset of the full capabilities,
+ * i.e. only those capabilities which map directly to sigrok SCPI commands
+ */
+const struct scpi_command chroma_61604_cmd[] = {
+       { SCPI_CMD_REMOTE, "SYST:REM" },
+       { SCPI_CMD_LOCAL, "SYST:LOC" },
+       { SCPI_CMD_BEEPER, "STAT:QUES:EVEN?" },
+       { SCPI_CMD_BEEPER_DISABLE, "OUTP:PROT:CLE" },
+       { 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:STAT?" },
+       { 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,
@@ -303,6 +352,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),
-- 
2.2.0.rc0.207.ga3a616c


------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
sigrok-devel mailing list
sigrok-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to