X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=decode.c;h=8246eeee34e70eabf311baabaf001a28626d89cd;hp=bc36a843546281648e68f11883c39b9389af0cb8;hb=7d8068f88f58f3998a9c74956e385a1e906001e8;hpb=20fb52e08416238c60392b410f69856cc7d98650 diff --git a/decode.c b/decode.c index bc36a84..8246eee 100644 --- a/decode.c +++ b/decode.c @@ -377,9 +377,11 @@ int setup_pd_binary(char *opt_pd_binary) void show_pd_annotations(struct srd_proto_data *pdata, void *cb_data) { + struct srd_decoder *dec; struct srd_proto_data_annotation *pda; gpointer ann_format; - int format; + int format, i; + char **ann_descr; /* 'cb_data' is not used in this specific callback. */ (void)cb_data; @@ -393,16 +395,29 @@ void show_pd_annotations(struct srd_proto_data *pdata, void *cb_data) return; format = GPOINTER_TO_INT(ann_format); + dec = pdata->pdo->di->decoder; pda = pdata->data; if (format != -1 && pda->ann_format != format) /* We don't want this particular format from the PD. */ return; - if (opt_loglevel > SR_LOG_WARN) - printf("%"PRIu64"-%"PRIu64" ", pdata->start_sample, pdata->end_sample); - printf("%s: ", pdata->pdo->proto_id); - /* Show only the longest annotation. */ - printf("\"%s\" ", pda->ann_text[0]); + if (opt_loglevel <= SR_LOG_WARN) { + /* Show only the longest annotation. */ + printf("%s", pda->ann_text[0]); + } else if (opt_loglevel >= SR_LOG_INFO) { + /* Sample numbers and quotes around the longest annotation. */ + printf("%"PRIu64"-%"PRIu64"", pdata->start_sample, pdata->end_sample); + if (opt_loglevel == SR_LOG_INFO) { + printf(" \"%s\"", pda->ann_text[0]); + } else { + /* Protocol decoder id, annotation class, + * all annotation strings. */ + ann_descr = g_slist_nth_data(dec->annotations, pda->ann_format); + printf(" %s: %s:", pdata->pdo->proto_id, ann_descr[0]); + for (i = 0; pda->ann_text[i]; i++) + printf(" \"%s\"", pda->ann_text[i]); + } + } printf("\n"); fflush(stdout); }