X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=show.c;h=0b33d682724500e9906e14681a80856012d0e1b7;hb=1eb46be87ba64500504044da46d77e059193ccc4;hp=6b2f9853b0fbf9731b0b237117f804fba2bc8ce3;hpb=21f6f69686721d53b44c2da8d138c8d85780b8d8;p=sigrok-cli.git diff --git a/show.c b/show.c index 6b2f985..0b33d68 100644 --- a/show.c +++ b/show.c @@ -20,6 +20,7 @@ #include "sigrok-cli.h" #include "config.h" #include +#include extern gint opt_loglevel; extern gchar *opt_pds; @@ -187,7 +188,11 @@ void show_dev_detail(void) g_variant_unref(gvar_opts); } + /* Selected probes and probe group may affect which options are + * returned, or which values for them. */ + select_probes(sdi); probe_group = select_probe_group(sdi); + if ((sr_config_list(sdi->driver, sdi, probe_group, SR_CONF_DEVICE_OPTIONS, &gvar_opts)) != SR_OK) /* Driver supports no device instance options. */ @@ -235,6 +240,21 @@ void show_dev_detail(void) printf("\n"); g_variant_unref(gvar); + } else if (srci->key == SR_CONF_LIMIT_SAMPLES) { + /* If implemented in config_list(), this denotes the + * maximum number of samples a device can send. This + * really applies only to logic analyzers, and then + * only to those that don't support compression, or + * have it turned off by default. The values returned + * are the low/high limits. */ + if (sr_config_list(sdi->driver, sdi, probe_group, srci->key, + &gvar) != SR_OK) { + continue; + } + g_variant_get(gvar, "(tt)", &low, &high); + g_variant_unref(gvar); + printf(" Maximum number of samples: %"PRIu64"\n", high); + } else if (srci->key == SR_CONF_SAMPLERATE) { /* Supported samplerates */ printf(" %s", srci->id); @@ -417,11 +437,12 @@ void show_dev_detail(void) #ifdef HAVE_SRD void show_pd_detail(void) { - GSList *l; + GSList *l, *ll; struct srd_decoder *dec; struct srd_decoder_option *o; char **pdtokens, **pdtok, *optsep, **ann, *val, *doc; struct srd_probe *p; + struct srd_decoder_annotation_row *r; pdtokens = g_strsplit(opt_pds, ",", -1); for (pdtok = pdtokens; *pdtok; pdtok++) { @@ -444,6 +465,18 @@ void show_pd_detail(void) } else { printf("None.\n"); } + printf("Annotation rows:\n"); + if (dec->annotation_rows) { + for (l = dec->annotation_rows; l; l = l->next) { + r = l->data; + printf("- %s (%s): ", r->desc, r->id); + for (ll = r->ann_classes; ll; ll = ll->next) + printf("%d ", GPOINTER_TO_INT(ll->data)); + printf("\n"); + } + } else { + printf("None.\n"); + } printf("Required probes:\n"); if (dec->probes) { for (l = dec->probes; l; l = l->next) { @@ -464,14 +497,16 @@ void show_pd_detail(void) } else { printf("None.\n"); } + printf("Options:\n"); if (dec->options) { - printf("Options:\n"); for (l = dec->options; l; l = l->next) { o = l->data; val = g_variant_print(o->def, FALSE); printf("- %s: %s (default %s)\n", o->id, o->desc, val); g_free(val); } + } else { + printf("None.\n"); } if ((doc = srd_decoder_doc_get(dec))) { printf("Documentation:\n%s\n",