Source code for usbcore.endpoint

#!/usr/bin/env python3

from enum import IntEnum


[docs]class EndpointType(IntEnum): IN = 1 OUT = 2 BIDIR = IN | OUT
[docs] @classmethod def epaddr(cls, ep_num, ep_dir): assert ep_dir != cls.BIDIR return ep_num << 1 | (ep_dir == cls.IN)
[docs] @classmethod def epnum(cls, ep_addr): return ep_addr >> 1
[docs] @classmethod def epdir(cls, ep_addr): if ep_addr & 0x1 == 0: return cls.OUT else: return cls.IN
[docs]class EndpointResponse(IntEnum): """ >>> # Clearing top bit of STALL -> NAK >>> assert (EndpointResponse.STALL & EndpointResponse.RESET_MASK) == EndpointResponse.NAK """ STALL = 0b11 ACK = 0b00 NAK = 0b01 NONE = 0b10 RESET_MASK = 0b01
if __name__ == "__main__": import doctest doctest.testmod()