scpi: Move SCPI-related definitions to separate header file.
This commit is contained in:
parent
64bc73f528
commit
5a1afc0907
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
#define SERIALCOMM "115200/8n1/flow=1"
|
#define SERIALCOMM "115200/8n1/flow=1"
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
static const char *hameg_scpi_dialect[] = {
|
static const char *hameg_scpi_dialect[] = {
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
static const uint32_t scanopts[] = {
|
static const uint32_t scanopts[] = {
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -92,7 +92,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
||||||
sdi->priv = devc;
|
sdi->priv = devc;
|
||||||
|
|
||||||
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
|
sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "P1");
|
||||||
|
|
||||||
sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
|
sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
|
||||||
libusb_get_device_address(devlist[i]), NULL);
|
libusb_get_device_address(devlist[i]), NULL);
|
||||||
sdi->inst_type = SR_INST_USB;
|
sdi->inst_type = SR_INST_USB;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
SR_PRIV struct sr_dev_driver yokogawa_dlm_driver_info;
|
SR_PRIV struct sr_dev_driver yokogawa_dlm_driver_info;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
static const char *dlm_coupling_options[] = {
|
static const char *dlm_coupling_options[] = {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
|
|
||||||
extern int dlm_timebase_get(struct sr_scpi_dev_inst *scpi,
|
extern int dlm_timebase_get(struct sr_scpi_dev_inst *scpi,
|
||||||
|
|
|
@ -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);
|
SR_PRIV int usb_get_port_path(libusb_device *dev, char *path, int path_len);
|
||||||
#endif
|
#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 -------------------------------------------------------*/
|
/*--- modbus/modbus.c -------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -21,6 +21,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi"
|
#define LOG_PREFIX "scpi"
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_gpib"
|
#define LOG_PREFIX "scpi_gpib"
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_serial"
|
#define LOG_PREFIX "scpi_serial"
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_tcp"
|
#define LOG_PREFIX "scpi_tcp"
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_usbtmc"
|
#define LOG_PREFIX "scpi_usbtmc"
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_visa"
|
#define LOG_PREFIX "scpi_visa"
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "vxi.h"
|
#include "vxi.h"
|
||||||
#include <libsigrok/libsigrok.h>
|
#include <libsigrok/libsigrok.h>
|
||||||
#include "libsigrok-internal.h"
|
#include "libsigrok-internal.h"
|
||||||
|
#include "scpi.h"
|
||||||
|
|
||||||
#define LOG_PREFIX "scpi_vxi"
|
#define LOG_PREFIX "scpi_vxi"
|
||||||
#define VXI_DEFAULT_TIMEOUT_MS 2000
|
#define VXI_DEFAULT_TIMEOUT_MS 2000
|
||||||
|
|
Loading…
Reference in New Issue