From: Bert Vermeulen Date: Sun, 22 Jul 2012 10:23:59 +0000 (+0200) Subject: sr: add sr_dev_probe_enable(), abstraction wrapper around device probes X-Git-Tag: dsupstream~779 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=be5bf44d281cc0a85992666803afdd7dafcefaf9;p=libsigrok.git sr: add sr_dev_probe_enable(), abstraction wrapper around device probes --- diff --git a/device.c b/device.c index e6372ff2..be647fb2 100644 --- a/device.c +++ b/device.c @@ -273,6 +273,38 @@ SR_API int sr_dev_probe_name_set(struct sr_dev *dev, int probenum, return SR_OK; } +/** + * Enable or disable a probe on the specified device. + * + * @param sdi The device instance the probe is connected to. + * @param probenum The probe number, starting from 0. + * @param state TRUE to enable the probe, FALSE to disable. + * + * @return SR_OK on success, or SR_ERR_ARG on invalid arguments. + */ +SR_API int sr_dev_probe_enable(const struct sr_dev_inst *sdi, int probenum, + gboolean state) +{ + GSList *l; + struct sr_probe *probe; + int ret; + + 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) { + probe->enabled = state; + ret = SR_OK; + break; + } + } + + return ret; +} + /** * Remove all triggers set up for the specified device. * diff --git a/proto.h b/proto.h index d25ce2ec..3b69c348 100644 --- a/proto.h +++ b/proto.h @@ -56,6 +56,8 @@ SR_API struct sr_probe *sr_dev_probe_find(const struct sr_dev *dev, int probenum); SR_API int sr_dev_probe_name_set(struct sr_dev *dev, 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_remove_all(struct sr_dev *dev); SR_API int sr_dev_trigger_set(const struct sr_dev_inst *sdi, int probenum, const char *trigger); diff --git a/session_file.c b/session_file.c index 91890d31..d90595eb 100644 --- a/session_file.c +++ b/session_file.c @@ -151,10 +151,8 @@ SR_API int sr_session_load(const char *filename) } } g_strfreev(keys); - for (p = enabled_probes; p < total_probes; p++) { - probe = g_slist_nth_data(dev->probes, p); - probe->enabled = FALSE; - } + for (p = enabled_probes; p < total_probes; p++) + sr_dev_probe_enable(sdi, p, FALSE); } devcnt++; }