X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fscpi_vxi.c;h=639b3b566ec8af7e522057f5d0d9c7f5cd198a60;hb=811d6255bbed786183616867196029b639fd7891;hp=4d713dceb9446f9fe6ff0dd4669d88072e645ab8;hpb=f754c1469188a5e1a82c98532cb21b334530a91a;p=libsigrok.git diff --git a/hardware/common/scpi_vxi.c b/hardware/common/scpi_vxi.c index 4d713dce..639b3b56 100644 --- a/hardware/common/scpi_vxi.c +++ b/hardware/common/scpi_vxi.c @@ -21,6 +21,8 @@ */ #include +#include + #include "vxi.h" #include "libsigrok.h" #include "libsigrok-internal.h" @@ -37,11 +39,12 @@ struct scpi_vxi { unsigned int read_complete; }; -static int scpi_vxi_dev_inst_new(void *priv, const char *resource, - char **params, const char *serialcomm) +static int scpi_vxi_dev_inst_new(void *priv, struct drv_context *drvc, + const char *resource, char **params, const char *serialcomm) { struct scpi_vxi *vxi = priv; + (void)drvc; (void)resource; (void)serialcomm; @@ -89,7 +92,7 @@ static int scpi_vxi_open(void *priv) } static int scpi_vxi_source_add(void *priv, int events, int timeout, - sr_receive_data_callback_t cb, void *cb_data) + sr_receive_data_callback cb, void *cb_data) { (void)priv; @@ -196,12 +199,16 @@ static int scpi_vxi_close(void *priv) struct scpi_vxi *vxi = priv; Device_Error *dev_error; + if (!vxi->client) + return SR_ERR; + if (!(dev_error = destroy_link_1(&vxi->link, vxi->client))) { sr_err("Link destruction failed for %s", vxi->address); return SR_ERR; } clnt_destroy(vxi->client); + vxi->client = NULL; return SR_OK; }