X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=decode.c;h=8246eeee34e70eabf311baabaf001a28626d89cd;hp=28b156b45c03050931cd6f11e915fd632192248d;hb=cc76d4230af8ce99ff03a13026f92609971f15ec;hpb=26c63758bd4e5676cb6c987668ca46053c5e82bb diff --git a/decode.c b/decode.c index 28b156b..8246eee 100644 --- a/decode.c +++ b/decode.c @@ -17,13 +17,9 @@ * along with this program. If not, see . */ +#include "sigrok-cli.h" #include "config.h" #include -#include -#ifdef HAVE_SRD -#include /* First, so we avoid a _POSIX_C_SOURCE warning. */ -#endif -#include "sigrok-cli.h" #ifdef HAVE_SRD static GHashTable *pd_ann_visible = NULL; @@ -381,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; @@ -397,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); }