Exemple #1
0
 def __init__(self, context, device_p):
     """
     You should not instanciate this class directly.
     Call LibUSBContext methods to receive instances of this class.
     """
     # Important: device_p refcount must be incremented before being given
     # to this constructor. This class will decrement refcount upon
     # destruction.
     self.__context = context
     self.device_p = device_p
     # Fetch device descriptor
     device_descriptor = libusb1.libusb_device_descriptor()
     result = libusb1.libusb_get_device_descriptor(device_p,
         byref(device_descriptor))
     if result:
         raise libusb1.USBError(result)
     self.device_descriptor = device_descriptor
     # Fetch all configuration descriptors
     self.__configuration_descriptor_list = []
     append = self.__configuration_descriptor_list.append
     for configuration_id in xrange(device_descriptor.bNumConfigurations):
         config = libusb1.libusb_config_descriptor_p()
         result = libusb1.libusb_get_config_descriptor(device_p,
             configuration_id, byref(config))
         if result == libusb1.LIBUSB_ERROR_NOT_FOUND:
             # Some devices (ex windows' root hubs) tell they have one
             # configuration, but they have no configuration descriptor.
             continue
         if result:
             raise libusb1.USBError(result)
         append(config.contents)
def open_cp2130():
    context = libusb1.libusb_context_p()
    deviceList = libusb1.libusb_device_p_p()
    deviceCount = 0
    deviceDescriptor = libusb1.libusb_device_descriptor()
    device = libusb1.libusb_device_p()
    cp2130Handle = libusb1.libusb_device_handle_p()
    kernelAttached = 0

    if libusb1.libusb_init(byref(context)) != 0:
        print('Could not initialize libusb!')
        exit_cp2130()

    deviceCount = libusb1.libusb_get_device_list(context, byref(deviceList))

    if deviceCount <= 0:
        print('No devices found!')
        exit_cp2130()

    for i in range(0, deviceCount):
        if libusb1.libusb_get_device_descriptor(deviceList[i],
                                                byref(deviceDescriptor)) == 0:
            if (deviceDescriptor.idVendor
                    == 0x10C4) and (deviceDescriptor.idProduct == 0x87A0):
                device = deviceList[i]
                break

    if device == None:
        print('CP2130 device not found!')
        exit_cp2130()

    if libusb1.libusb_open(device, byref(cp2130Handle)) != 0:
        print('Could not open device!')
        exit_cp2130()

    if libusb1.libusb_kernel_driver_active(cp2130Handle, 0) != 0:
        libusb1.libusb_detach_kernel_driver(cp2130Handle, 0)
        kernelAttached = 1

    if libusb1.libusb_claim_interface(cp2130Handle, 0) != 0:
        print('Could not claim interface!')
        exit_cp2130()

    if cp2130_libusb_set_usb_config(cp2130Handle) == False:
        exit_cp2130()
    if cp2130_libusb_set_spi_word(cp2130Handle) == False:
        exit_cp2130()

    print('Successfully opened CP2130!')
    return cp2130Handle, kernelAttached, deviceList, context
Exemple #3
0
 def refreshBoards(self):
     dev_list = []
     deviceCount = libusb1.libusb_get_device_list(self.context,
                                                  byref(self.deviceList))
     if deviceCount <= 0:
         print('No devices found!')
     for i in range(0, deviceCount):
         if libusb1.libusb_get_device_descriptor(
                 self.deviceList[i], byref(self.deviceDescriptor)) == 0:
             if (self.deviceDescriptor.idVendor
                     == 0x10C4) and (self.deviceDescriptor.idProduct
                                     == 0x87A0):
                 dev_list.append(self.deviceList[i])
                 self.device = self.deviceList[i]
     # TODO: how to get device desciptor from libusb1?
     if dev_list:
         self.boardsChanged.emit(["cp2130"])
     else:
         self.boardsChanged.emit([])
Exemple #4
0
 def __init__(self, context, device_p):
     self.context = context
     libusb1.libusb_ref_device(device_p)
     self.device_p = device_p
     # Fetch device descriptor
     device_descriptor = libusb1.libusb_device_descriptor()
     result = libusb1.libusb_get_device_descriptor(device_p,
         byref(device_descriptor))
     if result:
         raise libusb1.USBError, result
     self.device_descriptor = device_descriptor
     # Fetch all configuration descriptors
     self.configuration_descriptor_list = []
     append = self.configuration_descriptor_list.append
     for configuration_id in xrange(device_descriptor.bNumConfigurations):
         config = libusb1.libusb_config_descriptor_p()
         result = libusb1.libusb_get_config_descriptor(device_p,
             configuration_id, byref(config))
         if result:
             raise libusb1.USBError, result
         append(config.contents)