]> sigrok.org Git - libsigrokdecode.git/commitdiff
ir_nec: Annotate IR frame already at the end of the STOP bit
authorBenediktO <redacted>
Mon, 27 Jul 2020 06:31:31 +0000 (08:31 +0200)
committerGerhard Sittig <redacted>
Sun, 30 Aug 2020 08:23:43 +0000 (10:23 +0200)
Emit annotations for the current IR frame as soon as possible, at the
very end of the STOP bit. Don't defer annotation emission until the
start of the next frame is seen. This unbreaks captures where the last
IR frame would not decode before.

[ gsi: rephrased commit message, updated comment in the implementation ]

decoders/ir_nec/pd.py

index 0c4987f6fe234dc56ec2fb6e8fca16db42940e03..05c8c006655797ccf03b323f6cb92660f4e61dda 100644 (file)
@@ -228,9 +228,12 @@ class Decoder(srd.Decoder):
                 (self.ir,) = self.wait({Pin.IR: 'e'})
 
             if self.ir != active:
-                # Save the non-active edge, then wait for the next edge.
+                # Save the location of the non-active edge (recessive),
+                # then wait for the next edge. Immediately process the
+                # end of the STOP bit which completes an IR frame.
                 self.ss_other_edge = self.samplenum
-                continue
+                if self.state != 'STOP':
+                    continue
 
             # Reset internal state for long periods of idle level.
             width = self.samplenum - self.ss_bit