self.state = 'IDLE'
self.reg = 0x00 # Currently selected register
self.databytes = []
- self.mintemp = 0
- self.maxtemp = 0
- self.avgvalues = []
def start(self):
# self.out_proto = self.register(srd.OUTPUT_PYTHON)
self.out_ann = self.register(srd.OUTPUT_ANN)
- def report(self):
- # 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.
self.put(self.ss, self.es, self.out_ann, data)
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
- self.avgvalues.append(celsius)
-
def handle_temperature_reg(self, b, s, rw):
# Common helper for the temperature/T_HYST/T_OS registers.
if len(self.databytes) == 0:
self.bitcount = 0
self.mosidata = 0
self.misodata = 0
- self.bytesreceived = 0
self.startsample = -1
self.samplenum = -1
self.cs_was_deasserted_during_data_word = 0
self.out_bitrate = self.register(srd.OUTPUT_META,
meta=(int, 'Bitrate', 'Bitrate during transfers'))
- def report(self):
- return 'SPI: %d bytes received' % self.bytesreceived
-
def putpw(self, data):
self.put(self.startsample, self.samplenum, self.out_proto, data)
# Reset decoder state.
self.mosidata = self.misodata = self.bitcount = 0
- # Keep stats for summary.
- self.bytesreceived += 1
-
def find_clk_edge(self, miso, mosi, sck, cs):
if self.have_cs and self.oldcs != cs:
# Send all CS# pin value changes.