X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=decoders%2Fusb_request%2Fpd.py;h=71097a1bdc3fdf1fca43b331d45dc94699d79e53;hb=37c120b9629d6671273703166cce94a8200d9476;hp=49b0b3501dcc272a315375e9d185a01d4ee60941;hpb=2787cf2abc0187679e87d3735ca3e64c2a1a91c8;p=libsigrokdecode.git diff --git a/decoders/usb_request/pd.py b/decoders/usb_request/pd.py index 49b0b35..71097a1 100644 --- a/decoders/usb_request/pd.py +++ b/decoders/usb_request/pd.py @@ -129,7 +129,9 @@ class Decoder(srd.Decoder): ('errors', 'Unexpected packets'), ) annotation_rows = ( - ('request', 'USB requests', tuple(range(4))), + ('request-setup', 'USB SETUP', (0, 1)), + ('request-in', 'USB BULK IN', (2,)), + ('request-out', 'USB BULK OUT', (3,)), ('errors', 'Errors', (4,)), ) binary = ( @@ -211,7 +213,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 +234,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 +343,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