X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fscpi%2Fscpi.c;h=fc7e9939c0e72ae5dfe173b25147ead17ffe5143;hb=828832194f0a32097046fbd5c33edd6eee8c7a60;hp=e198b2bd296579d5fe89d14baf59c131489dae65;hpb=6433156c3275df933e4bf6dcfb020c91fca0ae86;p=libsigrok.git diff --git a/src/scpi/scpi.c b/src/scpi/scpi.c index e198b2bd..fc7e9939 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); } /** @@ -574,7 +579,7 @@ SR_PRIV int sr_scpi_get_opc(struct sr_scpi_dev_inst *scpi) unsigned int i; gboolean opc; - for (i = 0; i < SCPI_READ_RETRIES; ++i) { + for (i = 0; i < SCPI_READ_RETRIES; i++) { sr_scpi_get_bool(scpi, SCPI_CMD_OPC, &opc); if (opc) 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;