X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcommon%2Fscpi_vxi.c;h=271917b082dfedeaab67419d581e8806eecd9844;hb=102f12396660e0784134bccce5cc0679db325751;hp=4d713dceb9446f9fe6ff0dd4669d88072e645ab8;hpb=f754c1469188a5e1a82c98532cb21b334530a91a;p=libsigrok.git diff --git a/hardware/common/scpi_vxi.c b/hardware/common/scpi_vxi.c index 4d713dce..271917b0 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; @@ -88,20 +91,20 @@ static int scpi_vxi_open(void *priv) return SR_OK; } -static int scpi_vxi_source_add(void *priv, int events, int timeout, - sr_receive_data_callback_t cb, void *cb_data) +static int scpi_vxi_source_add(struct sr_session *session, void *priv, + int events, int timeout, sr_receive_data_callback cb, void *cb_data) { (void)priv; /* Hook up a dummy handler to receive data from the device. */ - return sr_source_add(-1, events, timeout, cb, cb_data); + return sr_session_source_add(session, -1, events, timeout, cb, cb_data); } -static int scpi_vxi_source_remove(void *priv) +static int scpi_vxi_source_remove(struct sr_session *session, void *priv) { (void)priv; - return sr_source_remove(-1); + return sr_session_source_remove(session, -1); } /* Operation Flags */ @@ -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; }