From: Bert Vermeulen Date: Wed, 27 Nov 2013 10:24:45 +0000 (+0100) Subject: Rearrange protocol decoder output levels. X-Git-Tag: sigrok-cli-0.5.0~58 X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=commitdiff_plain;h=6fdcc67df1da2edc38ea16bf2f17950ba4a0161e Rearrange protocol decoder output levels. The protocol decoder output now varies according to --loglevel: WARN (--loglevel 2, default): - show only the first annotation string, without quotes INFO (--loglevel 3): - add sample numbers - quotes around annotation DBG (--loglevel 4 and up): - add protocol decoder id - add annotation class - show all annotation strings, not just the first In all cases, all annotation classes are shown, unless restricted with the --protocol-decoder-annotations (-A) option. --- diff --git a/decode.c b/decode.c index bc36a84..5e05df1 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) + 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); - printf("%s: ", pdata->pdo->proto_id); - /* Show only the longest annotation. */ - printf("\"%s\" ", pda->ann_text[0]); + 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); }