X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fusb_request%2Fpd.py;h=25ee4c5878629f748b5ee9137ff2698ff769e694;hp=49b0b3501dcc272a315375e9d185a01d4ee60941;hb=7c4029417cbdd12fdbfbd2a94107e215c1eaa605;hpb=ff73d589b60677cf405d8e6af8810c849595fd7a diff --git a/decoders/usb_request/pd.py b/decoders/usb_request/pd.py index 49b0b35..25ee4c5 100644 --- a/decoders/usb_request/pd.py +++ b/decoders/usb_request/pd.py @@ -211,7 +211,8 @@ class Decoder(srd.Decoder): self.handle_request(request_started, request_end) elif request['type'] in (None, 'BULK OUT') and self.transaction_type == 'OUT': request['type'] = 'BULK OUT' - request['data'] += self.transaction_data + if self.handshake == 'ACK': + request['data'] += self.transaction_data self.handle_request(request_started, request_end) # CONTROL, SETUP stage @@ -231,7 +232,8 @@ class Decoder(srd.Decoder): request['data'] += self.transaction_data elif request['type'] == 'SETUP OUT' and self.transaction_type == 'OUT': - request['data'] += self.transaction_data + if self.handshake == 'ACK': + request['data'] += self.transaction_data if request['wLength'] == len(request['data']): self.handle_request(1, 0) @@ -339,6 +341,8 @@ class Decoder(srd.Decoder): self.es_transaction = es self.transaction_state = 'TOKEN RECEIVED' self.transaction_ep = ep + if ep > 0 and pname == 'IN': + self.transaction_ep = ep + 0x80 self.transaction_addr = addr self.transaction_type = pname # IN OUT SETUP