From 58453e5876ffae9153e9f4ddc2ad8dc244c7f26d Mon Sep 17 00:00:00 2001 From: Bert Vermeulen Date: Sat, 21 Jul 2012 19:11:49 +0200 Subject: [PATCH] sr: change sr_dev_trigger_set() to use sdi --- device.c | 41 ++++++++++++++++++----------------------- proto.h | 4 ++-- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/device.c b/device.c index fb8d60b2..e6372ff2 100644 --- a/device.c +++ b/device.c @@ -329,34 +329,29 @@ SR_API int sr_dev_trigger_remove_all(struct sr_dev *dev) * upon other errors. * If something other than SR_OK is returned, 'dev' is unchanged. */ -SR_API int sr_dev_trigger_set(struct sr_dev *dev, int probenum, - const char *trigger) +SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, + const char *trigger) { - struct sr_probe *p; + GSList *l; + struct sr_probe *probe; + int ret; - if (!dev) { - sr_err("dev: %s: dev was NULL", __func__); + if (!sdi) return SR_ERR_ARG; + + ret = SR_ERR_ARG; + for (l = sdi->probes; l; l = l->next) { + probe = l->data; + if (probe->index == probenum) { + /* If the probe already has a trigger, kill it first. */ + g_free(probe->trigger); + probe->trigger = g_strdup(trigger); + ret = SR_OK; + break; + } } - /* TODO: Sanity check on 'probenum'. */ - - /* TODO: Sanity check on 'trigger'. */ - - 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? */ - } - - /* If the probe already has a trigger, kill it first. */ - g_free(p->trigger); - - p->trigger = g_strdup(trigger); - sr_dbg("dev: %s: Setting '%s' trigger for probe %d.", __func__, - p->trigger, probenum); - - return SR_OK; + return ret; } /** diff --git a/proto.h b/proto.h index ff5cb941..d25ce2ec 100644 --- a/proto.h +++ b/proto.h @@ -57,8 +57,8 @@ SR_API struct sr_probe *sr_dev_probe_find(const struct sr_dev *dev, SR_API int sr_dev_probe_name_set(struct sr_dev *dev, int probenum, const char *name); SR_API int sr_dev_trigger_remove_all(struct sr_dev *dev); -SR_API int sr_dev_trigger_set(struct sr_dev *dev, int probenum, - const char *trigger); +SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, + const char *trigger); SR_API gboolean sr_dev_has_hwcap(const struct sr_dev *dev, int hwcap); SR_API int sr_dev_info_get(const struct sr_dev *dev, int id, const void **data);