]> sigrok.org Git - libsigrokdecode.git/commitdiff
uart: skip frames with invalid start bits
authorGerhard Sittig <redacted>
Sun, 16 Oct 2016 16:26:18 +0000 (18:26 +0200)
committerUwe Hermann <redacted>
Wed, 19 Oct 2016 20:36:49 +0000 (22:36 +0200)
When the start bit is not low at its sample point, then stop trying
to interpret the remaining frame -- it's already known to be invalid,
anyway.

Wait for the next start bit instead, assuming that either the falling
edge which started the inspection of the UART frame and its start bit
was a spurious glitch or that the captured signal does not communicate
at the decoder's configured bitrate.

Signed-off-by: Gerhard Sittig <redacted>
decoders/uart/pd.py

index af773b477e37493b10ea1ca5c40a458eb0d438cc..093f3fca92ac04339aecfcce4d5087b58bf99847 100644 (file)
@@ -223,11 +223,13 @@ class Decoder(srd.Decoder):
 
         self.startbit[rxtx] = signal
 
-        # The startbit must be 0. If not, we report an error.
+        # The startbit must be 0. If not, we report an error and wait
+        # for the next start bit (assuming this one was spurious).
         if self.startbit[rxtx] != 0:
             self.putp(['INVALID STARTBIT', rxtx, self.startbit[rxtx]])
             self.putg([rxtx + 10, ['Frame error', 'Frame err', 'FE']])
-            # TODO: Abort? Ignore rest of the frame?
+            self.state[rxtx] = 'WAIT FOR START BIT'
+            return
 
         self.cur_data_bit[rxtx] = 0
         self.datavalue[rxtx] = 0