]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/i2c/i2c.py
srd: Performance improvements for various PDs.
[libsigrokdecode.git] / decoders / i2c / i2c.py
index 0e79497cc848253c7c1386ee8f1a3cace489ff1b..53321eb02c401525e78fc3bd59774117a1078589 100644 (file)
@@ -88,6 +88,7 @@ class Decoder(srd.Decoder):
         self.state = 'FIND START'
         self.oldscl = None
         self.oldsda = None
+        self.oldpins = None
 
     def start(self, metadata):
         self.out_proto = self.add(srd.OUTPUT_PROTO, 'i2c')
@@ -198,7 +199,12 @@ class Decoder(srd.Decoder):
         super(Decoder, self).put(self.startsample, self.samplenum, output_id, data)
 
     def decode(self, ss, es, data):
-        for (self.samplenum, (scl, sda)) in data:
+        for (self.samplenum, pins) in data:
+
+            # Ignore identical samples early on (for performance reasons).
+            if self.oldpins == pins:
+                continue
+            self.oldpins, (scl, sda) = pins, pins
 
             # First sample: Save SCL/SDA value.
             if self.oldscl == None: