+ if self.transaction_state == 'TOKEN RECEIVED':
+ transaction_timeout = self.transaction_es
+ # token length is 35 bits, timeout is 16..18 bit times (USB 2.0 7.1.19.1)
+ transaction_timeout += int((self.transaction_es - self.transaction_ss) / 2)
+ if (ss > transaction_timeout):
+ self.transaction_es = transaction_timeout
+ self.handshake = 'timeout'
+ self.handle_transfer()
+ self.transaction_state = 'IDLE'
+