From: Bert Vermeulen Date: Sun, 22 Jul 2012 18:05:36 +0000 (+0200) Subject: sr: change sr_dev_probe_name_set() to use sdi X-Git-Tag: dsupstream~768 X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=37e8b4c4f7eaa6132a25448bccc690ac764f9a63 sr: change sr_dev_probe_name_set() to use sdi --- diff --git a/device.c b/device.c index 566a665d..cfa5492f 100644 --- a/device.c +++ b/device.c @@ -28,39 +28,38 @@ * If the probe already has a different name assigned to it, it will be * removed, and the new name will be saved instead. * - * @param dev TODO + * @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 1 (not 0!). - * @param name The new name that the specified probe should get. + * 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 upon success, SR_ERR_ARG upon invalid arguments, or SR_ERR - * upon other errors. - * If something other than SR_OK is returned, 'dev' is unchanged. + * @return SR_OK on success, or SR_ERR_ARG on invalid arguments. */ -SR_API int sr_dev_probe_name_set(struct sr_dev *dev, int probenum, - const char *name) +SR_API int sr_dev_probe_name_set(const struct sr_dev_inst *sdi, + int probenum, const char *name) { - struct sr_probe *p; + GSList *l; + struct sr_probe *probe; + int ret; - if (!dev) { - sr_err("dev: %s: dev was NULL", __func__); + if (!sdi) { + sr_err("%s: sdi was NULL", __func__); return SR_ERR_ARG; } - p = sr_dev_probe_find(dev, probenum); - if (!p) { - sr_err("dev: %s: probe %d not found", __func__, probenum); - return SR_ERR; /* TODO: More specific error? */ + ret = SR_ERR_ARG; + for (l = sdi->probes; l; l = l->next) { + probe = l->data; + if (probe->index == probenum) { + g_free(probe->name); + probe->name = g_strdup(name); + ret = SR_OK; + break; + } } - /* TODO: Sanity check on 'name'. */ - - /* If the probe already has a name, kill it first. */ - g_free(p->name); - - p->name = g_strdup(name); - - return SR_OK; + return ret; } /** diff --git a/proto.h b/proto.h index f8651a12..5b30cf05 100644 --- a/proto.h +++ b/proto.h @@ -47,8 +47,8 @@ SR_API int sr_datastore_put(struct sr_datastore *ds, void *data, /*--- device.c --------------------------------------------------------------*/ -SR_API int sr_dev_probe_name_set(struct sr_dev *dev, int probenum, - const char *name); +SR_API int sr_dev_probe_name_set(const struct sr_dev_inst *sdi, + int probenum, const char *name); SR_API int sr_dev_probe_enable(const struct sr_dev_inst *sdi, int probenum, gboolean state); SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, diff --git a/session_file.c b/session_file.c index d90595eb..0d455971 100644 --- a/session_file.c +++ b/session_file.c @@ -144,7 +144,7 @@ SR_API int sr_session_load(const char *filename) continue; enabled_probes++; tmp_u64 = strtoul(keys[j]+5, NULL, 10); - sr_dev_probe_name_set(dev, tmp_u64, val); + sr_dev_probe_name_set(sdi, tmp_u64, val); } else if (!strncmp(keys[j], "trigger", 7)) { probenum = strtoul(keys[j]+7, NULL, 10); sr_dev_trigger_set(sdi, probenum, val);