|
|
@@ -0,0 +1,59 @@ |
|
|
|
# |
|
|
|
# This file is part of usb-protocol. |
|
|
|
# |
|
|
|
""" SuperSpeed USB types -- defines enumerations that describe standard USB3 types. """ |
|
|
|
|
|
|
|
from enum import IntEnum |
|
|
|
|
|
|
|
class LinkCommand(IntEnum): |
|
|
|
""" Constant values (including both class and type) for link commands. """ |
|
|
|
|
|
|
|
LGOOD = 0 # Header Packet ACK |
|
|
|
LCRD = 1 # Header Credit |
|
|
|
LRTY = 2 # Header Packet Retry Sequence |
|
|
|
LBAD = 3 # Header Packet NAK |
|
|
|
LGO_U = 4 # Request Switching to Power State Ux |
|
|
|
LAU = 5 # Power State Acceptance |
|
|
|
LXU = 6 # Power State Rejection |
|
|
|
LPMA = 7 # Power State Acknowledgement |
|
|
|
LDN = 8 # Downstream-facing Keep-alive |
|
|
|
LUP = 11 # Upstream-facing Keep-alive |
|
|
|
|
|
|
|
def get_class(self): |
|
|
|
return int(self) >> 2 |
|
|
|
|
|
|
|
def get_type(self): |
|
|
|
return int(self) & 0b11 |
|
|
|
|
|
|
|
|
|
|
|
class HeaderPacketType(IntEnum): |
|
|
|
""" Constants representing the Header Packet archetypes. """ |
|
|
|
TRANSACTION = 0b00100 |
|
|
|
DATA = 0b01000 |
|
|
|
ISOCHRONOUS_TIMESTAMP = 0b01100 |
|
|
|
LINK_MANAGEMENT = 0b00000 |
|
|
|
|
|
|
|
|
|
|
|
class TransactionPacketSubtype(IntEnum): |
|
|
|
""" Constants representing the subtypes of Transition Header Packet. """ |
|
|
|
|
|
|
|
ACK = 1 |
|
|
|
NRDY = 2 |
|
|
|
ERDY = 3 |
|
|
|
STATUS = 4 |
|
|
|
STALL = 5 |
|
|
|
NOTIFICATION = 6 |
|
|
|
PING = 7 |
|
|
|
PING_RESPONSE = 8 |
|
|
|
|
|
|
|
|
|
|
|
class LinkManagementPacketSubtype(IntEnum): |
|
|
|
""" Constants represneting the various types of Link Management Packet. """ |
|
|
|
|
|
|
|
SET_LINK_FUNCTION = 1 |
|
|
|
U2_INACTIVITY_TIMEOUT = 2 |
|
|
|
VENDOR_DEVICE_TEST = 3 |
|
|
|
PORT_CAPABILITY = 4 |
|
|
|
PORT_CONFIGURATION = 5 |
|
|
|
PORT_CONFIGURATION_RESPONSE = 6 |
|
|
|
PRECISION_TIME_MANAGEMENT = 7 |