def __get_unknown_descriptor(b): assert len(b) > 2, "Invalid descriptor: " + btoh(b) l = [] l.append("unknown descriptor " + get_size_repr(len(b))) l.append(" bLength = {0}".format(byte_to_int(b[0:1]))) l.append(" bDescriptorType = {0}".format(byte_to_int(b[1:2]))) return l
def __get_endpoint_descriptor(b): assert len(b) == 7, "Invalid endpoint descriptor: " + btoh(b) l = [] l.append("endpoint descriptor " + get_size_repr(len(b))) l.append(" bLength = {0}".format(byte_to_int(b[0:1]))) l.append(" bDescriptorType = {0}".format(byte_to_int(b[1:2]))) l.append(" bEndpointAddress = 0x{0:02X}".format(byte_to_int(b[2:3]))) l.append(" bmAttributes = 0x{0:02X}".format(byte_to_int(b[3:4]))) l.append(" wMaxPacketSize = 0x{0:04X}".format(le_to_int(b[4:6]))) l.append(" bInterval = {0}".format(byte_to_int(b[6:7]))) return l
def __get_interface_descriptor(b): assert len(b) == 9, "Invalid interface descriptor: " + btoh(b) l = [] l.append("interface descriptor " + get_size_repr(len(b))) l.append(" bLength = {0}".format(byte_to_int(b[0:1]))) l.append(" bDescriptorType = {0}".format(byte_to_int(b[1:2]))) l.append(" bInterfaceNumber = {0}".format(byte_to_int(b[2:3]))) l.append(" bAlternateSetting = {0}".format(byte_to_int(b[3:4]))) l.append(" bNumEndpoints = {0}".format(byte_to_int(b[4:5]))) l.append(" bInterfaceClass = {0}".format(byte_to_int(b[5:6]))) l.append(" bInterfaceSubClass = {0}".format(byte_to_int(b[6:7]))) l.append(" bInterfaceProtocol = {0}".format(byte_to_int(b[7:8]))) l.append(" iInterface = {0}".format(byte_to_int(b[8:9]))) return l
def __get_device_descriptor(b): assert len(b) == 18, "Invalid device descriptor: " + btoh(b) l = [] l.append("device descriptor " + get_size_repr(len(b))) l.append(" bLength = {0}".format(byte_to_int(b[0:1]))) l.append(" bDescriptorType = {0}".format(byte_to_int(b[1:2]))) l.append(" bcdUSB = 0x{0:04X}".format(le_to_int(b[2:4]))) l.append(" bDeviceClass = {0}".format(byte_to_int(b[4:5]))) l.append(" bDeviceSubClass = {0}".format(byte_to_int(b[5:6]))) l.append(" bDeviceProtocol = {0}".format(byte_to_int(b[6:7]))) l.append(" bMaxPacketSize0 = {0}".format(byte_to_int(b[7:8]))) l.append(" idVendor = 0x{0:04X}".format(le_to_int(b[8:10]))) l.append(" idProduct = 0x{0:04X}".format(le_to_int(b[10:12]))) l.append(" bcdDevice = 0x{0:04X}".format(le_to_int(b[12:14]))) l.append(" iManufacturer = {0}".format(byte_to_int(b[14:15]))) l.append(" iProduct = {0}".format(byte_to_int(b[15:16]))) l.append(" iSerialNumber = {0}".format(byte_to_int(b[16:17]))) l.append(" bNumConfigurations = {0}".format(byte_to_int(b[17:18]))) return l
def __get_config_descriptor(b): assert len(b) == 9, "Invalid config descriptor: " + btoh(b) l = [] l.append("config descriptor " + get_size_repr(len(b))) l.append(" bLength = {0}".format(byte_to_int(b[0:1]))) l.append(" bDescriptorType = {0}".format(byte_to_int(b[1:2]))) l.append(" wTotalLength = {0}".format(le_to_int(b[2:4]))) l.append(" bNumInterfaces = {0}".format(byte_to_int(b[4:5]))) l.append(" bConfigurationValue = {0}".format(byte_to_int(b[5:6]))) l.append(" iConfiguration = {0}".format(byte_to_int(b[6:7]))) l.append(" bmAttributes = 0x{0:02X}".format(byte_to_int(b[7:8]))) l.append(" bMaxPower = {0}".format(byte_to_int(b[8:9]))) return l