- self.put(self.ss_word, self.samplenum, self.out_ann, [Ann.WORD,
- ['Fail: %X (%s)' % (word, bitstring)]])
-
- self.bits, self.ss_word = [], 0
-
- def find_clk_edge(self, clock_pin, data_pin):
- # Ignore sample if the clock pin hasn't changed.
- if clock_pin == self.prev_clock:
- return
- self.prev_clock = clock_pin
-
- # Sample on falling clock edge.
- if clock_pin == 1:
- return
-
- # Found the correct clock edge, now get the bits.
- self.handle_bits(data_pin)
-
- def decode(self, ss, es, data):
- for (self.samplenum, pins) in data:
- clock_pin, data_pin = pins[0], pins[1]
-
- # Ignore identical samples.
- if self.prev_pins == pins:
- continue
- self.prev_pins = pins
-
- if clock_pin == 0 and not self.clock_was_high:
- continue
- self.clock_was_high = True
-
- self.find_clk_edge(clock_pin, data_pin)
+ self.putx(9, [Ann.PARITY_ERR, ['Parity error', 'Par err', 'PE']])
+ self.putx(10, [Ann.STOP, ['Stop bit', 'Stop', 'St', 'T']])
+
+ self.bits, self.bitcount = [], 0
+
+ def decode(self):
+ while True:
+ # Sample data bits on the falling clock edge (assume the device
+ # is the transmitter). Expect the data byte transmission to end
+ # at the rising clock edge. Cope with the absence of host activity.
+ _, data_pin = self.wait({0: 'f'})
+ self.handle_bits(data_pin)
+ if self.bitcount == 1 + 8 + 1 + 1:
+ _, data_pin = self.wait({0: 'r'})
+ self.handle_bits(data_pin)