X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=sigrok-cli.c;h=ce504b743a0a70f8f6e9ae230ad55c70c9c304c1;hp=33d8ebbedb5f979cf02f557a8c230e8ed566a860;hb=4611cadf654ea6d0a64c0d5ae8d766f68bc15165;hpb=ca07c71183a88c7f6eeb47c0d11399f0145562a1 diff --git a/sigrok-cli.c b/sigrok-cli.c index 33d8ebb..ce504b7 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -119,7 +119,7 @@ static void show_version(void) printf("Supported protocol decoders:\n"); for (l = srd_list_decoders(); l; l = l->next) { dec = l->data; - printf(" %-20s %s\n", dec->id, dec->desc); + printf(" %-20s %s\n", dec->id, dec->longname); } printf("\n"); @@ -258,6 +258,38 @@ static void show_device_detail(void) } } +static void show_pd_detail(void) +{ + GSList *l; + struct srd_decoder *dec; + char **pdtokens, **pdtok, **ann, *doc; + + pdtokens = g_strsplit(opt_pds, ",", -1); + for (pdtok = pdtokens; *pdtok; pdtok++) { + if (!(dec = srd_get_decoder_by_id(*pdtok))) { + printf("Protocol decoder %s not found.", *pdtok); + return; + } + printf("ID: %s\nName: %s\nLong name: %s\nDescription: %s\n", + dec->id, dec->name, dec->longname, dec->desc); + printf("License: %s\n", dec->license); + if (dec->annotations) { + printf("Annotations:\n"); + for (l = dec->annotations; l; l = l->next) { + ann = l->data; + printf("- %s\n %s\n", ann[0], ann[1]); + } + } + if ((doc = srd_decoder_doc(dec))) { + printf("Documentation:\n%s\n", doc[0] == '\n' ? doc+1 : doc); + g_free(doc); + } + } + + g_strfreev(pdtokens); + +} + static void datafeed_in(struct sr_device *device, struct sr_datafeed_packet *packet) { static struct sr_output *o = NULL; @@ -1063,6 +1095,8 @@ int main(int argc, char **argv) run_session(); else if (opt_device) show_device_detail(); + else if (opt_pds) + show_pd_detail(); else printf("%s", g_option_context_get_help(context, TRUE, NULL));