]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/i2c/i2c.py
srd: Initial decoder for AVR ISP protocol.
[libsigrokdecode.git] / decoders / i2c / i2c.py
index 5f67d3576ab49d70eb0dbc15e107de67b3d8edea..53321eb02c401525e78fc3bd59774117a1078589 100644 (file)
@@ -55,7 +55,7 @@ class Decoder(srd.Decoder):
     id = 'i2c'
     name = 'I2C'
     longname = 'Inter-Integrated Circuit'
-    desc = 'I2C is a two-wire, multi-master, serial bus.'
+    desc = 'Two-wire, multi-master, serial bus.'
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['i2c']
@@ -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: