From: Bert Vermeulen Date: Tue, 24 Jul 2012 17:10:09 +0000 (+0200) Subject: sr/drivers: add proper probe list to instances of all drivers X-Git-Tag: dsupstream~757 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=87ca93c5043899e3c30edb7e09fadef3ee67d810;p=libsigrok.git sr/drivers: add proper probe list to instances of all drivers --- diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c index 5cb6130c..918a0e15 100644 --- a/hardware/asix-sigma/asix-sigma.c +++ b/hardware/asix-sigma/asix-sigma.c @@ -443,12 +443,13 @@ static int hw_init(void) static GSList *hw_scan(GSList *options) { struct sr_dev_inst *sdi; + struct sr_probe *probe; struct context *ctx; GSList *devices; struct ftdi_device_list *devlist; char serial_txt[10]; uint32_t serial; - int ret; + int ret, i; (void)options; devices = NULL; @@ -499,6 +500,14 @@ static GSList *hw_scan(GSList *options) goto free; } sdi->driver = adi; + + for (i = 0; probe_names[i]; i++) { + if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE, + probe_names[i]))) + return NULL; + sdi->probes = g_slist_append(sdi->probes, probe); + } + devices = g_slist_append(devices, sdi); adi->instances = g_slist_append(adi->instances, sdi); sdi->priv = ctx; diff --git a/hardware/chronovu-la8/api.c b/hardware/chronovu-la8/api.c index a8888604..61bbfc36 100644 --- a/hardware/chronovu-la8/api.c +++ b/hardware/chronovu-la8/api.c @@ -77,6 +77,7 @@ static int hw_init(void) static GSList *hw_scan(GSList *options) { struct sr_dev_inst *sdi; + struct sr_probe *probe; struct context *ctx; GSList *devices; unsigned int i; @@ -146,6 +147,13 @@ static GSList *hw_scan(GSList *options) sdi->driver = cdi; sdi->priv = ctx; + for (i = 0; probe_names[i]; i++) { + if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE, + probe_names[i]))) + return NULL; + sdi->probes = g_slist_append(sdi->probes, probe); + } + devices = g_slist_append(devices, sdi); cdi->instances = g_slist_append(cdi->instances, sdi); diff --git a/hardware/demo/demo.c b/hardware/demo/demo.c index 2f845108..89ea6df3 100644 --- a/hardware/demo/demo.c +++ b/hardware/demo/demo.c @@ -152,7 +152,9 @@ static int hw_init(void) static GSList *hw_scan(GSList *options) { struct sr_dev_inst *sdi; + struct sr_probe *probe; GSList *devices; + int i; (void)options; devices = NULL; @@ -164,6 +166,13 @@ static GSList *hw_scan(GSList *options) } sdi->driver = ddi; + for (i = 0; probe_names[i]; i++) { + if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE, + probe_names[i]))) + return NULL; + sdi->probes = g_slist_append(sdi->probes, probe); + } + devices = g_slist_append(devices, sdi); ddi->instances = g_slist_append(ddi->instances, sdi); diff --git a/hardware/hantek-dso/api.c b/hardware/hantek-dso/api.c index fbb84760..4efeb65e 100644 --- a/hardware/hantek-dso/api.c +++ b/hardware/hantek-dso/api.c @@ -151,7 +151,9 @@ static struct sr_dev_driver *hdi = &hantek_dso_driver_info; static struct sr_dev_inst *dso_dev_new(int index, const struct dso_profile *prof) { struct sr_dev_inst *sdi; + struct sr_probe *probe; struct context *ctx; + int i; sdi = sr_dev_inst_new(index, SR_ST_INITIALIZING, prof->vendor, prof->model, NULL); @@ -159,6 +161,16 @@ static struct sr_dev_inst *dso_dev_new(int index, const struct dso_profile *prof return NULL; sdi->driver = hdi; + /* Add only the real probes -- EXT isn't a source of data, only + * a trigger source internal to the device. + */ + for (i = 0; probe_names[i]; i++) { + if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE, + probe_names[i]))) + return NULL; + sdi->probes = g_slist_append(sdi->probes, probe); + } + if (!(ctx = g_try_malloc0(sizeof(struct context)))) { sr_err("hantek-dso: ctx malloc failed"); return NULL; diff --git a/libsigrok.h b/libsigrok.h index 2ff6244e..e7b988c4 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -251,6 +251,7 @@ struct sr_dev { enum { SR_PROBE_LOGIC, + SR_PROBE_ANALOG, }; struct sr_probe {