static void print_dev_line(const struct sr_dev_inst *sdi)
{
+ struct sr_probe *probe;
+ GSList *l;
if (sdi->vendor && sdi->vendor[0])
printf("%s ", sdi->vendor);
printf("%s ", sdi->model);
if (sdi->version && sdi->version[0])
printf("%s ", sdi->version);
- if (sdi->probes)
- printf("with %d probes", g_slist_length(sdi->probes));
+ if (sdi->probes) {
+ if (g_slist_length(sdi->probes) == 1) {
+ probe = sdi->probes->data;
+ printf("with 1 probe: %s", probe->name);
+ } else {
+ printf("with %d probes:", g_slist_length(sdi->probes));
+ for (l = sdi->probes; l; l = l->next) {
+ probe = l->data;
+ printf(" %s", probe->name);
+ }
+ }
+ }
printf("\n");
}
static int select_probes(struct sr_dev_inst *sdi)
{
- char **probelist;
- int max_probes, i;
+ struct sr_probe *probe;
+ GSList *selected_probes, *l;
if (!opt_probes)
return SR_OK;
- /*
- * This only works because a device by default initializes
- * and enables all its probes.
- */
- max_probes = g_slist_length(sdi->probes);
- probelist = parse_probestring(max_probes, opt_probes);
- if (!probelist) {
+ if (!(selected_probes = parse_probestring(sdi, opt_probes)))
return SR_ERR;
- }
- for (i = 0; i < max_probes; i++) {
- if (probelist[i]) {
- sr_dev_probe_name_set(sdi, i, probelist[i]);
- g_free(probelist[i]);
- } else {
- sr_dev_probe_enable(sdi, i, FALSE);
- }
+ for (l = sdi->probes; l; l = l->next) {
+ probe = l->data;
+ if (g_slist_find(selected_probes, probe))
+ probe->enabled = TRUE;
+ else
+ probe->enabled = FALSE;
}
- g_free(probelist);
+ g_slist_free(selected_probes);
return SR_OK;
}
if (opt_pds)
srd_exit();
- g_option_context_free(context);
sr_exit();
+ g_option_context_free(context);
return 0;
}