From: Gerhard Sittig Date: Sat, 18 Jul 2020 18:30:43 +0000 (+0200) Subject: caliper: rephrase measurement annotation text construction X-Git-Url: http://sigrok.org/gitweb/?a=commitdiff_plain;h=ea0c4cb644431594c11b0ecf9449791f5e65b165;p=libsigrokdecode.git caliper: rephrase measurement annotation text construction Unclutter the construction of the annotation text for measurements. Prefer one code block over multiple scatterred lines. Only do string formatting when an annotation gets emitted. Prefer .format() for its better control over generated text. Fixup remaining Python idioms in the unit conversion block while we are here. --- diff --git a/decoders/caliper/pd.py b/decoders/caliper/pd.py index ff7d314..20a2a55 100644 --- a/decoders/caliper/pd.py +++ b/decoders/caliper/pd.py @@ -77,7 +77,7 @@ class Decoder(srd.Decoder): self.put(ss, es, self.out_ann, [cls, data]) def decode(self): - last_measurement = None + last_sent = None timeout_ms = self.options['timeout_ms'] want_unit = self.options['unit'] show_all = self.options['changes'] == 'no' @@ -123,26 +123,24 @@ class Decoder(srd.Decoder): if negative: number = -number if is_inch: - number = number / 2000 + number /= 2000 if want_unit == 'mm': number *= mm_per_inch is_inch = False else: - number = number / 100 + number /= 100 if want_unit == 'inch': number = round(number / mm_per_inch, 4) is_inch = True + unit = 'in' if is_inch else 'mm' - units = "in" if is_inch else "mm" - - measurement = (str(number) + units) - - if show_all or measurement != last_measurement: + # Construct and emit an annotation. + if show_all or (number, unit) != last_sent: self.putg(self.ss, self.es, 0, [ - measurement, - str(number), + '{number}{unit}'.format(**locals()), + '{number}'.format(**locals()), ]) - last_measurement = measurement + last_sent = (number, unit) - # Prepare for next packet. + # Reset internal state for the start of the next packet. self.reset()