From: Stefan BrĂ¼ns Date: Tue, 1 Dec 2015 04:53:32 +0000 (+0100) Subject: usb_{packet,request}: handle PREamble transmissions X-Git-Tag: libsigrokdecode-0.4.0~21 X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=be0f8fee99fe939c50ed5d2483a924754788c0b3 usb_{packet,request}: handle PREamble transmissions --- diff --git a/decoders/usb_packet/pd.py b/decoders/usb_packet/pd.py index 3e061c9..8d1de65 100644 --- a/decoders/usb_packet/pd.py +++ b/decoders/usb_packet/pd.py @@ -113,7 +113,7 @@ pids = { # Special '00111100': ['PRE', 'Host-issued preamble; enables downstream bus traffic to low-speed devices'], - '00111100': ['ERR', 'Split transaction error handshake'], + #'00111100': ['ERR', 'Split transaction error handshake'], '00011110': ['SPLIT', 'HS split transaction token'], '00101101': ['PING', 'HS flow control probe for a bulk/control EP'], '00001111': ['Reserved', 'Reserved PID'], @@ -281,7 +281,7 @@ class Decoder(srd.Decoder): self.packet.append(pid) self.packet_summary += pidname - if pidname in ('OUT', 'IN', 'SOF', 'SETUP', 'PRE', 'PING'): + if pidname in ('OUT', 'IN', 'SOF', 'SETUP', 'PING'): if len(packet) < 32: self.putp([28, ['Invalid packet (shorter than 32 bits)']]) return @@ -357,6 +357,8 @@ class Decoder(srd.Decoder): self.packet.append(crc16) elif pidname in ('ACK', 'NAK', 'STALL', 'NYET', 'ERR'): pass # Nothing to do, these only have SYNC+PID+EOP fields. + elif pidname in ('PRE'): + pass # Nothing to do, PRE only has SYNC+PID fields. else: pass # TODO: Handle 'SPLIT' and possibly 'Reserved' packets. diff --git a/decoders/usb_request/pd.py b/decoders/usb_request/pd.py index 4227856..4526e69 100644 --- a/decoders/usb_request/pd.py +++ b/decoders/usb_request/pd.py @@ -350,6 +350,9 @@ class Decoder(srd.Decoder): self.transaction_es = es self.handle_transfer() + elif pname == 'PRE': + return + else: self.putr(ss, es, [4, ['ERR: received unhandled %s token in state %s' % (pname, self.transaction_state)]])