summaryrefslogtreecommitdiff
path: root/decoders/usb_request/pd.py
diff options
context:
space:
mode:
Diffstat (limited to 'decoders/usb_request/pd.py')
-rw-r--r--decoders/usb_request/pd.py8
1 files changed, 6 insertions, 2 deletions
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