]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/scpi_vxi.c
Don't define names ending with _t (POSIX reserved).
[libsigrok.git] / hardware / common / scpi_vxi.c
index 4d713dceb9446f9fe6ff0dd4669d88072e645ab8..639b3b566ec8af7e522057f5d0d9c7f5cd198a60 100644 (file)
@@ -21,6 +21,8 @@
  */
 
 #include <rpc/rpc.h>
+#include <string.h>
+
 #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;
 }