]> sigrok.org Git - libsigrok.git/commitdiff
scpi: Move SCPI-related definitions to separate header file.
authorBert Vermeulen <redacted>
Sat, 15 Aug 2015 23:04:04 +0000 (01:04 +0200)
committerUwe Hermann <redacted>
Tue, 25 Aug 2015 17:13:16 +0000 (19:13 +0200)
18 files changed:
src/hardware/hameg-hmo/api.c
src/hardware/hameg-hmo/protocol.c
src/hardware/rigol-ds/api.c
src/hardware/rigol-ds/protocol.c
src/hardware/victor-dmm/api.c
src/hardware/yokogawa-dlm/api.c
src/hardware/yokogawa-dlm/protocol.c
src/hardware/yokogawa-dlm/protocol_wrappers.h
src/libsigrok-internal.h
src/scpi.h [new file with mode: 0644]
src/scpi/scpi.c
src/scpi/scpi_libgpib.c
src/scpi/scpi_serial.c
src/scpi/scpi_tcp.c
src/scpi/scpi_usbtmc_libusb.c
src/scpi/scpi_visa.c
src/scpi/scpi_vxi.c
src/std.c

index fb03d04cdd86ecc615d71235dd28f1471a3abe16..f1c271c895619c641768147354b9f87f7ca8a2c2 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include <stdlib.h>
+#include "scpi.h"
 #include "protocol.h"
 
 #define SERIALCOMM "115200/8n1/flow=1"
index 8e6dbb4fd0ac979be7cf76a22c622e62a0eb245e..b865d4a516e1a72e302ce75c12af98452a23d696 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "scpi.h"
 #include "protocol.h"
 
 static const char *hameg_scpi_dialect[] = {
index 8075a2e8ff8318d3a7b524765d144caae58850f5..679bf5467d1487e8743ef1979de530a83ff78ed2 100644 (file)
@@ -28,6 +28,7 @@
 #include <glib.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 #include "protocol.h"
 
 static const uint32_t scanopts[] = {
index d9a53f547e67e598fb1a0c458828c509e8741798..35ec618461c57eb1cfca134149bab2a9ea9615d2 100644 (file)
@@ -30,6 +30,7 @@
 #include <glib.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 #include "protocol.h"
 
 /*
index 3970a838bdea51915410ae597cf7fd5c40e8b07d..43b373422d81c8886dbd1bdd758380397df4f980 100644 (file)
@@ -92,7 +92,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                sdi->priv = devc;
 
                sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
-
                sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
                                libusb_get_device_address(devlist[i]), NULL);
                sdi->inst_type = SR_INST_USB;
index 382762b6a5c2dbe868d463bc7a79d51af69892d0..9e943f23a2a67119183539700b8735328d1a8e61 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <stdlib.h>
+#include "scpi.h"
 #include "protocol.h"
 
 SR_PRIV struct sr_dev_driver yokogawa_dlm_driver_info;
index 20ad5d55761070863249f3badc9995253e160846..3de55cf4ace7d1f79590b9ff994288eb5529b005 100644 (file)
@@ -25,6 +25,7 @@
  * @internal
  */
 
+#include "scpi.h"
 #include "protocol.h"
 
 static const char *dlm_coupling_options[] = {
index 47ae40ecf89114c23bc26a157b066d4663dea28d..445ce9745d86a997b33332cd600531f59850a440 100644 (file)
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 #include "protocol.h"
 
 extern int dlm_timebase_get(struct sr_scpi_dev_inst *scpi,
index b127d0ef14efd6481f6100296b64e2eb8076a7e8..4b3daf441151c9d5ed1cfef08c83a4855febc77d 100644 (file)
@@ -872,103 +872,6 @@ SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx
 SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len);
 #endif
 
-/*--- hardware/scpi.c -------------------------------------------------------*/
-
-#define SCPI_CMD_IDN "*IDN?"
-#define SCPI_CMD_OPC "*OPC?"
-
-enum {
-       SCPI_CMD_SET_TRIGGER_SOURCE,
-       SCPI_CMD_SET_TIMEBASE,
-       SCPI_CMD_SET_VERTICAL_DIV,
-       SCPI_CMD_SET_TRIGGER_SLOPE,
-       SCPI_CMD_SET_COUPLING,
-       SCPI_CMD_SET_HORIZ_TRIGGERPOS,
-       SCPI_CMD_GET_ANALOG_CHAN_STATE,
-       SCPI_CMD_GET_DIG_CHAN_STATE,
-       SCPI_CMD_GET_TIMEBASE,
-       SCPI_CMD_GET_VERTICAL_DIV,
-       SCPI_CMD_GET_VERTICAL_OFFSET,
-       SCPI_CMD_GET_TRIGGER_SOURCE,
-       SCPI_CMD_GET_HORIZ_TRIGGERPOS,
-       SCPI_CMD_GET_TRIGGER_SLOPE,
-       SCPI_CMD_GET_COUPLING,
-       SCPI_CMD_SET_ANALOG_CHAN_STATE,
-       SCPI_CMD_SET_DIG_CHAN_STATE,
-       SCPI_CMD_GET_DIG_POD_STATE,
-       SCPI_CMD_SET_DIG_POD_STATE,
-       SCPI_CMD_GET_ANALOG_DATA,
-       SCPI_CMD_GET_DIG_DATA,
-       SCPI_CMD_GET_SAMPLE_RATE,
-       SCPI_CMD_GET_SAMPLE_RATE_LIVE,
-};
-
-struct sr_scpi_hw_info {
-       char *manufacturer;
-       char *model;
-       char *serial_number;
-       char *firmware_version;
-};
-
-struct sr_scpi_dev_inst {
-       const char *name;
-       const char *prefix;
-       int priv_size;
-       GSList *(*scan)(struct drv_context *drvc);
-       int (*dev_inst_new)(void *priv, struct drv_context *drvc,
-               const char *resource, char **params, const char *serialcomm);
-       int (*open)(void *priv);
-       int (*source_add)(struct sr_session *session, void *priv, int events,
-               int timeout, sr_receive_data_callback cb, void *cb_data);
-       int (*source_remove)(struct sr_session *session, void *priv);
-       int (*send)(void *priv, const char *command);
-       int (*read_begin)(void *priv);
-       int (*read_data)(void *priv, char *buf, int maxlen);
-       int (*read_complete)(void *priv);
-       int (*close)(void *priv);
-       void (*free)(void *priv);
-       unsigned int read_timeout_ms;
-       void *priv;
-};
-
-SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
-               struct sr_dev_inst *(*probe_device)(struct sr_scpi_dev_inst *scpi));
-SR_PRIV struct sr_scpi_dev_inst *scpi_dev_inst_new(struct drv_context *drvc,
-               const char *resource, const char *serialcomm);
-SR_PRIV int sr_scpi_open(struct sr_scpi_dev_inst *scpi);
-SR_PRIV int sr_scpi_source_add(struct sr_session *session,
-               struct sr_scpi_dev_inst *scpi, int events, int timeout,
-               sr_receive_data_callback cb, void *cb_data);
-SR_PRIV int sr_scpi_source_remove(struct sr_session *session,
-               struct sr_scpi_dev_inst *scpi);
-SR_PRIV int sr_scpi_send(struct sr_scpi_dev_inst *scpi,
-               const char *format, ...);
-SR_PRIV int sr_scpi_send_variadic(struct sr_scpi_dev_inst *scpi,
-               const char *format, va_list args);
-SR_PRIV int sr_scpi_read_begin(struct sr_scpi_dev_inst *scpi);
-SR_PRIV int sr_scpi_read_data(struct sr_scpi_dev_inst *scpi, char *buf, int maxlen);
-SR_PRIV int sr_scpi_read_complete(struct sr_scpi_dev_inst *scpi);
-SR_PRIV int sr_scpi_close(struct sr_scpi_dev_inst *scpi);
-SR_PRIV void sr_scpi_free(struct sr_scpi_dev_inst *scpi);
-
-SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi,
-                       const char *command, char **scpi_response);
-SR_PRIV int sr_scpi_get_bool(struct sr_scpi_dev_inst *scpi,
-                       const char *command, gboolean *scpi_response);
-SR_PRIV int sr_scpi_get_int(struct sr_scpi_dev_inst *scpi,
-                       const char *command, int *scpi_response);
-SR_PRIV int sr_scpi_get_float(struct sr_scpi_dev_inst *scpi,
-                       const char *command, float *scpi_response);
-SR_PRIV int sr_scpi_get_double(struct sr_scpi_dev_inst *scpi,
-                       const char *command, double *scpi_response);
-SR_PRIV int sr_scpi_get_opc(struct sr_scpi_dev_inst *scpi);
-SR_PRIV int sr_scpi_get_floatv(struct sr_scpi_dev_inst *scpi,
-                       const char *command, GArray **scpi_response);
-SR_PRIV int sr_scpi_get_uint8v(struct sr_scpi_dev_inst *scpi,
-                       const char *command, GArray **scpi_response);
-SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
-                       struct sr_scpi_hw_info **scpi_response);
-SR_PRIV void sr_scpi_hw_info_free(struct sr_scpi_hw_info *hw_info);
 
 /*--- modbus/modbus.c -------------------------------------------------------*/
 
diff --git a/src/scpi.h b/src/scpi.h
new file mode 100644 (file)
index 0000000..36bc162
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * This file is part of the libsigrok project.
+ *
+ * Copyright (C) 2015 Bert Vermeulen <bert@biot.com>
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** @file
+  * @internal
+  */
+
+#ifndef LIBSIGROK_SCPI_H
+#define LIBSIGROK_SCPI_H
+
+#include <stdint.h>
+#include <glib.h>
+#include <libsigrok/libsigrok.h>
+#include "libsigrok-internal.h"
+
+#define SCPI_CMD_IDN "*IDN?"
+#define SCPI_CMD_OPC "*OPC?"
+
+enum {
+       SCPI_CMD_SET_TRIGGER_SOURCE = 1,
+       SCPI_CMD_SET_TIMEBASE,
+       SCPI_CMD_SET_VERTICAL_DIV,
+       SCPI_CMD_SET_TRIGGER_SLOPE,
+       SCPI_CMD_SET_COUPLING,
+       SCPI_CMD_SET_HORIZ_TRIGGERPOS,
+       SCPI_CMD_GET_ANALOG_CHAN_STATE,
+       SCPI_CMD_GET_DIG_CHAN_STATE,
+       SCPI_CMD_GET_TIMEBASE,
+       SCPI_CMD_GET_VERTICAL_DIV,
+       SCPI_CMD_GET_VERTICAL_OFFSET,
+       SCPI_CMD_GET_TRIGGER_SOURCE,
+       SCPI_CMD_GET_HORIZ_TRIGGERPOS,
+       SCPI_CMD_GET_TRIGGER_SLOPE,
+       SCPI_CMD_GET_COUPLING,
+       SCPI_CMD_SET_ANALOG_CHAN_STATE,
+       SCPI_CMD_SET_DIG_CHAN_STATE,
+       SCPI_CMD_GET_DIG_POD_STATE,
+       SCPI_CMD_SET_DIG_POD_STATE,
+       SCPI_CMD_GET_ANALOG_DATA,
+       SCPI_CMD_GET_DIG_DATA,
+       SCPI_CMD_GET_SAMPLE_RATE,
+       SCPI_CMD_GET_SAMPLE_RATE_LIVE,
+};
+
+struct sr_scpi_hw_info {
+       char *manufacturer;
+       char *model;
+       char *serial_number;
+       char *firmware_version;
+};
+
+struct sr_scpi_dev_inst {
+       const char *name;
+       const char *prefix;
+       int priv_size;
+       GSList *(*scan)(struct drv_context *drvc);
+       int (*dev_inst_new)(void *priv, struct drv_context *drvc,
+               const char *resource, char **params, const char *serialcomm);
+       int (*open)(void *priv);
+       int (*source_add)(struct sr_session *session, void *priv, int events,
+               int timeout, sr_receive_data_callback cb, void *cb_data);
+       int (*source_remove)(struct sr_session *session, void *priv);
+       int (*send)(void *priv, const char *command);
+       int (*read_begin)(void *priv);
+       int (*read_data)(void *priv, char *buf, int maxlen);
+       int (*read_complete)(void *priv);
+       int (*close)(void *priv);
+       void (*free)(void *priv);
+       unsigned int read_timeout_ms;
+       void *priv;
+};
+
+SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
+               struct sr_dev_inst *(*probe_device)(struct sr_scpi_dev_inst *scpi));
+SR_PRIV struct sr_scpi_dev_inst *scpi_dev_inst_new(struct drv_context *drvc,
+               const char *resource, const char *serialcomm);
+SR_PRIV int sr_scpi_open(struct sr_scpi_dev_inst *scpi);
+SR_PRIV int sr_scpi_source_add(struct sr_session *session,
+               struct sr_scpi_dev_inst *scpi, int events, int timeout,
+               sr_receive_data_callback cb, void *cb_data);
+SR_PRIV int sr_scpi_source_remove(struct sr_session *session,
+               struct sr_scpi_dev_inst *scpi);
+SR_PRIV int sr_scpi_send(struct sr_scpi_dev_inst *scpi,
+               const char *format, ...);
+SR_PRIV int sr_scpi_send_variadic(struct sr_scpi_dev_inst *scpi,
+               const char *format, va_list args);
+SR_PRIV int sr_scpi_read_begin(struct sr_scpi_dev_inst *scpi);
+SR_PRIV int sr_scpi_read_data(struct sr_scpi_dev_inst *scpi, char *buf, int maxlen);
+SR_PRIV int sr_scpi_read_complete(struct sr_scpi_dev_inst *scpi);
+SR_PRIV int sr_scpi_close(struct sr_scpi_dev_inst *scpi);
+SR_PRIV void sr_scpi_free(struct sr_scpi_dev_inst *scpi);
+
+SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi,
+                       const char *command, char **scpi_response);
+SR_PRIV int sr_scpi_get_bool(struct sr_scpi_dev_inst *scpi,
+                       const char *command, gboolean *scpi_response);
+SR_PRIV int sr_scpi_get_int(struct sr_scpi_dev_inst *scpi,
+                       const char *command, int *scpi_response);
+SR_PRIV int sr_scpi_get_float(struct sr_scpi_dev_inst *scpi,
+                       const char *command, float *scpi_response);
+SR_PRIV int sr_scpi_get_double(struct sr_scpi_dev_inst *scpi,
+                       const char *command, double *scpi_response);
+SR_PRIV int sr_scpi_get_opc(struct sr_scpi_dev_inst *scpi);
+SR_PRIV int sr_scpi_get_floatv(struct sr_scpi_dev_inst *scpi,
+                       const char *command, GArray **scpi_response);
+SR_PRIV int sr_scpi_get_uint8v(struct sr_scpi_dev_inst *scpi,
+                       const char *command, GArray **scpi_response);
+SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
+                       struct sr_scpi_hw_info **scpi_response);
+SR_PRIV void sr_scpi_hw_info_free(struct sr_scpi_hw_info *hw_info);
+
+#endif
index baf6e79f5445fe6b6e7e342c6bc750f8a597a823..8cf62ad4e06710e1069101a987e211a528411111 100644 (file)
@@ -21,6 +21,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi"
 
index 62d99c0a371851135eec88c799225b42d164c9f1..6b156b2cb5dfaddb88aedc75a67752ba95e208e8 100644 (file)
@@ -21,6 +21,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_gpib"
 
index fae623ba646ad68170fd3257e4d6507cd0a14a93..9522c29702305948e2d90c0cbba0c2101253108c 100644 (file)
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_serial"
 
index 7e891dbc9ff75ed2c20f7137e21cd6179f2b64c9..b598d70d0488c354d056be2ad6c34050ef4dbee7 100644 (file)
@@ -34,6 +34,7 @@
 #include <errno.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_tcp"
 
index 351f815816876138df4c058042f9b04d031888c0..caf17e7ec77d83e347c94ac778e50c3d3425e23d 100644 (file)
@@ -20,6 +20,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_usbtmc"
 
index 4b9056665b1579f0d5109a322b71534fd6ccf60b..335de05feacbda33af72614143fe4e17583832a7 100644 (file)
@@ -21,6 +21,7 @@
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_visa"
 
index 2526b487fbf932bf27b9f3377c4f4df142c77a21..e28a77a3d857587c9d8620576e8583d59a1dc0f8 100644 (file)
@@ -25,6 +25,7 @@
 #include "vxi.h"
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "scpi_vxi"
 #define VXI_DEFAULT_TIMEOUT_MS 2000
index b9757381291236083ba6acfd8c75ad3d556b47c1..05133a2f2fe315a9c5018a522c64b44068e8b712 100644 (file)
--- a/src/std.c
+++ b/src/std.c
@@ -26,6 +26,7 @@
 #include <glib.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
+#include "scpi.h"
 
 #define LOG_PREFIX "std"