From: Bert Vermeulen Date: Sat, 15 Aug 2015 23:04:04 +0000 (+0200) Subject: scpi: Move SCPI-related definitions to separate header file. X-Git-Tag: libsigrok-0.4.0~398 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=5a1afc0907abfee5848484f944789213d6be9752;p=libsigrok.git scpi: Move SCPI-related definitions to separate header file. --- diff --git a/src/hardware/hameg-hmo/api.c b/src/hardware/hameg-hmo/api.c index fb03d04c..f1c271c8 100644 --- a/src/hardware/hameg-hmo/api.c +++ b/src/hardware/hameg-hmo/api.c @@ -18,6 +18,7 @@ */ #include +#include "scpi.h" #include "protocol.h" #define SERIALCOMM "115200/8n1/flow=1" diff --git a/src/hardware/hameg-hmo/protocol.c b/src/hardware/hameg-hmo/protocol.c index 8e6dbb4f..b865d4a5 100644 --- a/src/hardware/hameg-hmo/protocol.c +++ b/src/hardware/hameg-hmo/protocol.c @@ -17,6 +17,7 @@ * along with this program. If not, see . */ +#include "scpi.h" #include "protocol.h" static const char *hameg_scpi_dialect[] = { diff --git a/src/hardware/rigol-ds/api.c b/src/hardware/rigol-ds/api.c index 8075a2e8..679bf546 100644 --- a/src/hardware/rigol-ds/api.c +++ b/src/hardware/rigol-ds/api.c @@ -28,6 +28,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #include "protocol.h" static const uint32_t scanopts[] = { diff --git a/src/hardware/rigol-ds/protocol.c b/src/hardware/rigol-ds/protocol.c index d9a53f54..35ec6184 100644 --- a/src/hardware/rigol-ds/protocol.c +++ b/src/hardware/rigol-ds/protocol.c @@ -30,6 +30,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #include "protocol.h" /* diff --git a/src/hardware/victor-dmm/api.c b/src/hardware/victor-dmm/api.c index 3970a838..43b37342 100644 --- a/src/hardware/victor-dmm/api.c +++ b/src/hardware/victor-dmm/api.c @@ -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; diff --git a/src/hardware/yokogawa-dlm/api.c b/src/hardware/yokogawa-dlm/api.c index 382762b6..9e943f23 100644 --- a/src/hardware/yokogawa-dlm/api.c +++ b/src/hardware/yokogawa-dlm/api.c @@ -19,6 +19,7 @@ */ #include +#include "scpi.h" #include "protocol.h" SR_PRIV struct sr_dev_driver yokogawa_dlm_driver_info; diff --git a/src/hardware/yokogawa-dlm/protocol.c b/src/hardware/yokogawa-dlm/protocol.c index 20ad5d55..3de55cf4 100644 --- a/src/hardware/yokogawa-dlm/protocol.c +++ b/src/hardware/yokogawa-dlm/protocol.c @@ -25,6 +25,7 @@ * @internal */ +#include "scpi.h" #include "protocol.h" static const char *dlm_coupling_options[] = { diff --git a/src/hardware/yokogawa-dlm/protocol_wrappers.h b/src/hardware/yokogawa-dlm/protocol_wrappers.h index 47ae40ec..445ce974 100644 --- a/src/hardware/yokogawa-dlm/protocol_wrappers.h +++ b/src/hardware/yokogawa-dlm/protocol_wrappers.h @@ -25,6 +25,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #include "protocol.h" extern int dlm_timebase_get(struct sr_scpi_dev_inst *scpi, diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index b127d0ef..4b3daf44 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -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 index 00000000..36bc1627 --- /dev/null +++ b/src/scpi.h @@ -0,0 +1,128 @@ +/* + * This file is part of the libsigrok project. + * + * Copyright (C) 2015 Bert Vermeulen + * + * 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 . + */ + +/** @file + * @internal + */ + +#ifndef LIBSIGROK_SCPI_H +#define LIBSIGROK_SCPI_H + +#include +#include +#include +#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 diff --git a/src/scpi/scpi.c b/src/scpi/scpi.c index baf6e79f..8cf62ad4 100644 --- a/src/scpi/scpi.c +++ b/src/scpi/scpi.c @@ -21,6 +21,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi" diff --git a/src/scpi/scpi_libgpib.c b/src/scpi/scpi_libgpib.c index 62d99c0a..6b156b2c 100644 --- a/src/scpi/scpi_libgpib.c +++ b/src/scpi/scpi_libgpib.c @@ -21,6 +21,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_gpib" diff --git a/src/scpi/scpi_serial.c b/src/scpi/scpi_serial.c index fae623ba..9522c297 100644 --- a/src/scpi/scpi_serial.c +++ b/src/scpi/scpi_serial.c @@ -23,6 +23,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_serial" diff --git a/src/scpi/scpi_tcp.c b/src/scpi/scpi_tcp.c index 7e891dbc..b598d70d 100644 --- a/src/scpi/scpi_tcp.c +++ b/src/scpi/scpi_tcp.c @@ -34,6 +34,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_tcp" diff --git a/src/scpi/scpi_usbtmc_libusb.c b/src/scpi/scpi_usbtmc_libusb.c index 351f8158..caf17e7e 100644 --- a/src/scpi/scpi_usbtmc_libusb.c +++ b/src/scpi/scpi_usbtmc_libusb.c @@ -20,6 +20,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_usbtmc" diff --git a/src/scpi/scpi_visa.c b/src/scpi/scpi_visa.c index 4b905666..335de05f 100644 --- a/src/scpi/scpi_visa.c +++ b/src/scpi/scpi_visa.c @@ -21,6 +21,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_visa" diff --git a/src/scpi/scpi_vxi.c b/src/scpi/scpi_vxi.c index 2526b487..e28a77a3 100644 --- a/src/scpi/scpi_vxi.c +++ b/src/scpi/scpi_vxi.c @@ -25,6 +25,7 @@ #include "vxi.h" #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "scpi_vxi" #define VXI_DEFAULT_TIMEOUT_MS 2000 diff --git a/src/std.c b/src/std.c index b9757381..05133a2f 100644 --- a/src/std.c +++ b/src/std.c @@ -26,6 +26,7 @@ #include #include #include "libsigrok-internal.h" +#include "scpi.h" #define LOG_PREFIX "std"