X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Flm75%2Flm75.py;h=05ff23156346392da3c5c59d06ed86a31831f4d9;hp=ef3191b0d4a2636a2d00b275ab95cb94b256bcbd;hb=b5d3ea69628d49ab5b26e064559f7a237b46c086;hpb=5b30440e7eea86e4d7e5ebc40aa738faf4899970 diff --git a/decoders/lm75/lm75.py b/decoders/lm75/lm75.py index ef3191b..05ff231 100644 --- a/decoders/lm75/lm75.py +++ b/decoders/lm75/lm75.py @@ -75,15 +75,18 @@ class Decoder(srd.Decoder): self.databytes = [] self.mintemp = 0 self.maxtemp = 0 - self.avgtemp = 0 + self.avgvalues = [] def start(self, metadata): # self.out_proto = self.add(srd.OUTPUT_PROTO, 'lm75') self.out_ann = self.add(srd.OUTPUT_ANN, 'lm75') def report(self): - # TODO: Output min/max/avg temperature. - pass + # TODO: print() or self.put() or return xyz, or... ? + avg = sum(self.avgvalues) / len(self.avgvalues) + temperatures = (self.mintemp, self.maxtemp, avg) + # TODO: Configurable report() output, e.g. for Kelvin. + return 'Min/max/avg temperature: %f/%f/%f °C' % temperatures def putx(self, data): # Helper for annotations which span exactly one I2C packet. @@ -109,12 +112,17 @@ class Decoder(srd.Decoder): self.putb([0, ['%s: %.1f °C' % (s, celsius)]]) self.putb([1, ['%s: %.1f °K' % (s, kelvin)]]) + # Warn about the temperature register (0x00) being read-only. + if s == 'Temperature' and rw == 'WRITE': + s = 'Warning: The temperature register is read-only!' + self.putb([4, [s]]) + # Keep some statistics. Can be output in report(), for example. if celsius < self.mintemp: self.mintemp = celsius if celsius > self.maxtemp: self.maxtemp = celsius - # TODO: avg. temp. + self.avgvalues.append(celsius) def handle_temperature_reg(self, b, s, rw): # Common helper for the temperature/T_HYST/T_OS registers.