]> sigrok.org Git - libsigrokdecode.git/commitdiff
uart: Fix corner-case that can occur with LA triggers.
authorUwe Hermann <redacted>
Wed, 11 Sep 2013 17:20:15 +0000 (19:20 +0200)
committerUwe Hermann <redacted>
Thu, 12 Sep 2013 13:56:05 +0000 (15:56 +0200)
Assume that the initial pin state is 1/high for the RX and TX lines.

This fixes the decode when an LA triggers on e.g. TX=low (the first
sample would be low in that case, so the falling edge for the start bit
would be missed by the decoder).

decoders/uart/pd.py

index b10012aa5eeaca0db38333f24fefeaa382a6136b..cca8952817aec2db7f53eacbe4ffd8796bdd18c0 100644 (file)
@@ -111,8 +111,8 @@ class Decoder(srd.Decoder):
         self.stopbit1 = [-1, -1]
         self.startsample = [-1, -1]
         self.state = ['WAIT FOR START BIT', 'WAIT FOR START BIT']
-        self.oldbit = [None, None]
-        self.oldpins = None
+        self.oldbit = [1, 1]
+        self.oldpins = [1, 1]
 
     def start(self, metadata):
         self.samplerate = metadata['samplerate']
@@ -268,14 +268,6 @@ class Decoder(srd.Decoder):
             #     continue
             self.oldpins, (rx, tx) = pins, pins
 
-            # First sample: Save RX/TX value.
-            if self.oldbit[RX] == None:
-                self.oldbit[RX] = rx
-                continue
-            if self.oldbit[TX] == None:
-                self.oldbit[TX] = tx
-                continue
-
             # State machine.
             for rxtx in (RX, TX):
                 signal = rx if (rxtx == RX) else tx