-extern struct sr_global *global;
-
-GSList *devices = NULL;
-
-void sr_device_scan(void)
-{
- GSList *plugins, *l;
- struct sr_device_plugin *plugin;
-
- plugins = sr_list_hwplugins();
-
- /*
- * Initialize all plugins first. Since the init() call may involve
- * a firmware upload and associated delay, we may as well get all
- * of these out of the way first.
- */
- for (l = plugins; l; l = l->next) {
- plugin = l->data;
- sr_device_plugin_init(plugin);
- }
-
-}
-
-int sr_device_plugin_init(struct sr_device_plugin *plugin)
-{
- int num_devices, num_probes, i;
-
- sr_info("initializing %s plugin", plugin->name);
- num_devices = plugin->init(NULL);
- for (i = 0; i < num_devices; i++) {
- num_probes = (int)plugin->get_device_info(i, SR_DI_NUM_PROBES);
- sr_device_new(plugin, i, num_probes);
- }
-
- return num_devices;
-}
-
-void sr_device_close_all(void)
-{
- struct sr_device *device;
-
- while (devices) {
- device = devices->data;
- if (device->plugin && device->plugin->close)
- device->plugin->close(device->plugin_index);
- sr_device_destroy(device);
- }
-}
-
-GSList *sr_device_list(void)
-{
-
- if (!devices)
- sr_device_scan();
-
- return devices;
-}
-
-struct sr_device *sr_device_new(struct sr_device_plugin *plugin, int plugin_index,
- int num_probes)
-{
- struct sr_device *device;
- int i;
-
- device = g_malloc0(sizeof(struct sr_device));
- device->plugin = plugin;
- device->plugin_index = plugin_index;
- devices = g_slist_append(devices, device);
-
- for (i = 0; i < num_probes; i++)
- sr_device_probe_add(device, NULL);
-
- return device;
-}
-
-void sr_device_clear(struct sr_device *device)
-{
- unsigned int pnum;
-
- /* TODO: Plugin-specific clear call? */
-
- if (!device->probes)
- return;
-
- for (pnum = 1; pnum <= g_slist_length(device->probes); pnum++)
- sr_device_probe_clear(device, pnum);
-}
-
-void sr_device_destroy(struct sr_device *device)
-{
- unsigned int pnum;
-
- /*
- * TODO: Plugin-specific destroy call, need to decrease refcount
- * in plugin.
- */
-
- devices = g_slist_remove(devices, device);
- if (device->probes) {
- for (pnum = 1; pnum <= g_slist_length(device->probes); pnum++)
- sr_device_probe_clear(device, pnum);
- g_slist_free(device->probes);
- }
- g_free(device);
-}
-
-void sr_device_probe_clear(struct sr_device *device, int probenum)
+/**
+ * Set the name of the specified probe in the specified device.
+ *
+ * If the probe already has a different name assigned to it, it will be
+ * removed, and the new name will be saved instead.
+ *
+ * @param sdi The device instance the probe is connected to.
+ * @param probenum The number of the probe whose name to set.
+ * Note that the probe numbers start at 0.
+ * @param name The new name that the specified probe should get. A copy
+ * of the string is made.
+ *
+ * @return SR_OK on success, or SR_ERR_ARG on invalid arguments.
+ */
+SR_API int sr_dev_probe_name_set(const struct sr_dev_inst *sdi,
+ int probenum, const char *name)