X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fusb_signalling%2Fusb_signalling.py;h=3272cbf713c19abbe07cf908c1a6b706f5d86b94;hp=512703dac13a6b8358bd21b623fef54e44fe5750;hb=2fcd7c22852436c3226de9007e88cb305cce1b00;hpb=b5d3ea69628d49ab5b26e064559f7a237b46c086 diff --git a/decoders/usb_signalling/usb_signalling.py b/decoders/usb_signalling/usb_signalling.py index 512703d..3272cbf 100644 --- a/decoders/usb_signalling/usb_signalling.py +++ b/decoders/usb_signalling/usb_signalling.py @@ -67,6 +67,7 @@ class Decoder(srd.Decoder): self.scount = 0 self.packet = '' self.syms = [] + self.oldpins = None def start(self, metadata): self.samplerate = metadata['samplerate'] @@ -77,13 +78,18 @@ class Decoder(srd.Decoder): pass def decode(self, ss, es, data): - for (self.samplenum, (dp, dm)) in data: + for (self.samplenum, pins) in data: # Note: self.samplenum is the absolute sample number, whereas # self.scount only counts the number of samples since the # last change in the D+/D- lines. self.scount += 1 + # Ignore identical samples early on (for performance reasons). + if self.oldpins == pins: + continue + self.oldpins, (dp, dm) = pins, pins + if self.options['signalling'] == 'low-speed': sym = symbols_ls[dp, dm] elif self.options['signalling'] == 'full-speed':