X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fscpi%2Fscpi.c;h=c3c2f7130e5c14d00a0eef3ed0af90be5bd89d50;hb=be64f90b53d09d9720dc6e06ff8ab61d96c03932;hp=38d74ab5ffcc17989d478e9a9cb93fcf3c9877a0;hpb=558d438d1f944284be13bec06db7ca67876ea234;p=libsigrok.git
diff --git a/src/scpi/scpi.c b/src/scpi/scpi.c
index 38d74ab5..c3c2f713 100644
--- a/src/scpi/scpi.c
+++ b/src/scpi/scpi.c
@@ -17,6 +17,7 @@
* along with this program. If not, see .
*/
+#include
#include
#include
#include
@@ -109,12 +110,16 @@ static struct sr_dev_inst *sr_scpi_scan_resource(struct drv_context *drvc,
return NULL;
};
- if ((sdi = probe_device(scpi)))
- return sdi;
+ sdi = probe_device(scpi);
sr_scpi_close(scpi);
- sr_scpi_free(scpi);
- return NULL;
+
+ if (sdi)
+ sdi->status = SR_ST_INACTIVE;
+ else
+ sr_scpi_free(scpi);
+
+ return sdi;
}
SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
@@ -209,7 +214,7 @@ SR_PRIV struct sr_scpi_dev_inst *scpi_dev_inst_new(struct drv_context *drvc,
*/
SR_PRIV int sr_scpi_open(struct sr_scpi_dev_inst *scpi)
{
- return scpi->open(scpi->priv);
+ return scpi->open(scpi);
}
/**
@@ -351,7 +356,7 @@ 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)
{
- return scpi->close(scpi->priv);
+ return scpi->close(scpi);
}
/**
@@ -425,10 +430,10 @@ SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi,
if (response->len >= 1 && response->str[response->len - 1] == '\r')
g_string_truncate(response, response->len - 1);
- *scpi_response = response->str;
- g_string_free(response, FALSE);
+ sr_spew("Got response: '%.70s', length %" G_GSIZE_FORMAT ".",
+ response->str, response->len);
- sr_spew("Got response: '%.70s', length %d.", *scpi_response, strlen(*scpi_response));
+ *scpi_response = g_string_free(response, FALSE);
return SR_OK;
}
@@ -606,7 +611,6 @@ SR_PRIV int sr_scpi_get_floatv(struct sr_scpi_dev_inst *scpi,
gchar **ptr, **tokens;
GArray *response_array;
- ret = SR_OK;
response = NULL;
tokens = NULL;
@@ -663,7 +667,6 @@ SR_PRIV int sr_scpi_get_uint8v(struct sr_scpi_dev_inst *scpi,
gchar **ptr, **tokens;
GArray *response_array;
- ret = SR_OK;
response = NULL;
tokens = NULL;