X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=decoders%2Fusb_signalling%2Fpd.py;h=7a885c05293a1820f0af0cb1509fdddad3add67e;hb=1b9ef18be867133e721681cbc20272cf5c669504;hp=c0e0141d7dcfd5554d3b10ece73180b3278ed968;hpb=12c567037d3bb4b52e5553397c2f9aef6859b840;p=libsigrokdecode.git diff --git a/decoders/usb_signalling/pd.py b/decoders/usb_signalling/pd.py index c0e0141..7a885c0 100644 --- a/decoders/usb_signalling/pd.py +++ b/decoders/usb_signalling/pd.py @@ -302,7 +302,7 @@ class Decoder(srd.Decoder): raise SamplerateError('Cannot decode without samplerate.') # Seed internal state from the very first sample. - pins = self.wait({'skip': 1}) + pins = self.wait() sym = symbols[self.options['signalling']][pins] self.handle_idle(sym) @@ -329,9 +329,10 @@ class Decoder(srd.Decoder): elif self.state == 'GET EOP': self.get_eop(sym) elif self.state == 'WAIT IDLE': - pins = self.wait({'skip': 1}) - if pins == (0, 0): - continue + # Skip "all-low" input. Wait for high level on either DP or DM. + pins = self.wait() + while not pins[0] and not pins[1]: + pins = self.wait([{0: 'h'}, {1: 'h'}]) if self.samplenum - self.samplenum_lastedge > 1: sym = symbols[self.options['signalling']][pins] self.handle_idle(sym)