scpi: Move SCPI-related definitions to separate header file.

This commit is contained in:
Bert Vermeulen 2015-08-16 01:04:04 +02:00 committed by Uwe Hermann
parent 64bc73f528
commit 5a1afc0907
18 changed files with 143 additions and 98 deletions

View File

@ -18,6 +18,7 @@
*/
#include <stdlib.h>
#include "scpi.h"
#include "protocol.h"
#define SERIALCOMM "115200/8n1/flow=1"

View 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[] = {

View 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[] = {

View File

@ -30,6 +30,7 @@
#include <glib.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#include "protocol.h"
/*

View 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;

View File

@ -19,6 +19,7 @@
*/
#include <stdlib.h>
#include "scpi.h"
#include "protocol.h"
SR_PRIV struct sr_dev_driver yokogawa_dlm_driver_info;

View File

@ -25,6 +25,7 @@
* @internal
*/
#include "scpi.h"
#include "protocol.h"
static const char *dlm_coupling_options[] = {

View 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,

View 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 -------------------------------------------------------*/

128
src/scpi.h Normal file
View File

@ -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

View File

@ -21,6 +21,7 @@
#include <string.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi"

View File

@ -21,6 +21,7 @@
#include <string.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi_gpib"

View File

@ -23,6 +23,7 @@
#include <string.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi_serial"

View File

@ -34,6 +34,7 @@
#include <errno.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi_tcp"

View File

@ -20,6 +20,7 @@
#include <string.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi_usbtmc"

View File

@ -21,6 +21,7 @@
#include <string.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "scpi_visa"

View 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

View File

@ -26,6 +26,7 @@
#include <glib.h>
#include <libsigrok/libsigrok.h>
#include "libsigrok-internal.h"
#include "scpi.h"
#define LOG_PREFIX "std"