]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/scpi.c
build: Portability fixes.
[libsigrok.git] / hardware / common / scpi.c
index 3d99954b19b422f5cb78db0e8a737f23c0442861..829a4c8cf1828bb141ce13c159767173cc12c151 100644 (file)
@@ -68,7 +68,6 @@ static int parse_strict_bool(const char *str, gboolean *ret)
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_serial_dev;
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_tcp_raw_dev;
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_tcp_rigol_dev;
-/* SR_PRIV extern const struct sr_scpi_dev_inst scpi_usbtmc_dev; */
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_usbtmc_libusb_dev;
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_vxi_dev;
 SR_PRIV extern const struct sr_scpi_dev_inst scpi_visa_dev;
@@ -76,7 +75,6 @@ SR_PRIV extern const struct sr_scpi_dev_inst scpi_visa_dev;
 static const struct sr_scpi_dev_inst *scpi_devs[] = {
        &scpi_tcp_raw_dev,
        &scpi_tcp_rigol_dev,
-       /* &scpi_usbtmc_dev, */
 #ifdef HAVE_LIBUSB_1_0
        &scpi_usbtmc_libusb_dev,
 #endif
@@ -91,7 +89,7 @@ static const struct sr_scpi_dev_inst *scpi_devs[] = {
 #endif
 };
 
-static GSList *sr_scpi_scan_resource(struct drv_context *drvc,
+static struct sr_dev_inst *sr_scpi_scan_resource(struct drv_context *drvc,
                const char *resource, const char *serialcomm,
                struct sr_dev_inst *(*probe_device)(struct sr_scpi_dev_inst *scpi))
 {
@@ -108,7 +106,7 @@ static GSList *sr_scpi_scan_resource(struct drv_context *drvc,
        };
 
        if ((sdi = probe_device(scpi)))
-               return g_slist_append(NULL, sdi);
+               return sdi;
 
        sr_scpi_close(scpi);
        sr_scpi_free(scpi);
@@ -118,7 +116,8 @@ static GSList *sr_scpi_scan_resource(struct drv_context *drvc,
 SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
                struct sr_dev_inst *(*probe_device)(struct sr_scpi_dev_inst *scpi))
 {
-       GSList *resources, *l, *d, *devices = NULL;
+       GSList *resources, *l, *devices;
+       struct sr_dev_inst *sdi;
        const char *resource = NULL;
        const char *serialcomm = NULL;
        gchar **res;
@@ -136,6 +135,7 @@ SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
                }
        }
 
+       devices = NULL;
        for (i = 0; i < ARRAY_SIZE(scpi_devs); i++) {
                if ((resource && strcmp(resource, scpi_devs[i]->prefix))
                    || !scpi_devs[i]->scan)
@@ -143,22 +143,22 @@ SR_PRIV GSList *sr_scpi_scan(struct drv_context *drvc, GSList *options,
                resources = scpi_devs[i]->scan(drvc);
                for (l = resources; l; l = l->next) {
                        res = g_strsplit(l->data, ":", 2);
-                       if (res[0] && (d = sr_scpi_scan_resource(drvc, res[0],
+                       if (res[0] && (sdi = sr_scpi_scan_resource(drvc, res[0],
                                       serialcomm ? serialcomm : res[1], probe_device)))
-                               devices = g_slist_concat(devices, d);
+                               devices = g_slist_append(devices, sdi);
                        g_strfreev(res);
                }
                g_slist_free_full(resources, g_free);
        }
 
-       if (!devices && resource)
-               devices = sr_scpi_scan_resource(drvc, resource, serialcomm,
-                                               probe_device);
+       if (!devices && resource) {
+               sdi = sr_scpi_scan_resource(drvc, resource, serialcomm, probe_device);
+               devices = g_slist_append(NULL, sdi);
+       }
 
        /* Tack a copy of the newly found devices onto the driver list. */
        if (devices)
-               drvc->instances = g_slist_concat(drvc->instances,
-                                                g_slist_copy(devices));
+               drvc->instances = g_slist_concat(drvc->instances, g_slist_copy(devices));
 
        return devices;
 }
@@ -216,10 +216,11 @@ SR_PRIV int sr_scpi_open(struct sr_scpi_dev_inst *scpi)
  * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments, or
  *         SR_ERR_MALLOC upon memory allocation errors.
  */
-SR_PRIV int sr_scpi_source_add(struct sr_scpi_dev_inst *scpi, int events,
-               int timeout, sr_receive_data_callback_t cb, void *cb_data)
+SR_PRIV int sr_scpi_source_add(struct sr_session *session,
+               struct sr_scpi_dev_inst *scpi, int events, int timeout,
+               sr_receive_data_callback cb, void *cb_data)
 {
-       return scpi->source_add(scpi->priv, events, timeout, cb, cb_data);
+       return scpi->source_add(session, scpi->priv, events, timeout, cb, cb_data);
 }
 
 /**
@@ -231,9 +232,10 @@ SR_PRIV int sr_scpi_source_add(struct sr_scpi_dev_inst *scpi, int events,
  *         SR_ERR_MALLOC upon memory allocation errors, SR_ERR_BUG upon
  *         internal errors.
  */
-SR_PRIV int sr_scpi_source_remove(struct sr_scpi_dev_inst *scpi)
+SR_PRIV int sr_scpi_source_remove(struct sr_session *session,
+               struct sr_scpi_dev_inst *scpi)
 {
-       return scpi->source_remove(scpi->priv);
+       return scpi->source_remove(session, scpi->priv);
 }
 
 /**