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;
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
#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))
{
};
if ((sdi = probe_device(scpi)))
- return g_slist_append(NULL, sdi);
+ return sdi;
sr_scpi_close(scpi);
sr_scpi_free(scpi);
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;
}
}
+ devices = NULL;
for (i = 0; i < ARRAY_SIZE(scpi_devs); i++) {
if ((resource && strcmp(resource, scpi_devs[i]->prefix))
|| !scpi_devs[i]->scan)
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;
}
* @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 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);
}
/**
* 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);
}
/**