lpc: improve performance, use proper .wait() condition
authorBenediktO <benedikt_o@web.de>
Wed, 25 Mar 2020 13:05:13 +0000 (14:05 +0100)
committerGerhard Sittig <gerhard.sittig@gmx.net>
Fri, 31 Jul 2020 14:25:45 +0000 (16:25 +0200)
Use a proper .wait() condition to have edges detected in common code,
and avoid the many transitions between C and Python. This dramatically
increases performance of the LPC protocol decoder.

[ gsi: rephrased and reflowed the commit message ]

decoders/lpc/pd.py

index cf1707fa670b07265486204d3d885906f6a0fbb8..2a88e30473841140682d14fb513a3044158661bf 100644 (file)
@@ -315,13 +315,9 @@ class Decoder(srd.Decoder):
         self.state = 'IDLE'
 
     def decode(self):
+        conditions = [{i: 'e'} for i in range(6)]
         while True:
-            # TODO: Come up with more appropriate self.wait() conditions.
-            pins = self.wait()
-
-            # If none of the pins changed, there's nothing to do.
-            if self.oldpins == pins:
-                continue
+            pins = self.wait(conditions)
 
             # Store current pin values for the next round.
             self.oldpins = pins