def __init__(self, parent, config, name): HW_PluginBase.__init__(self, parent, config, name) if not self.libraries_available: return # to support legacy devices and legacy firmwares self.device_manager().register_devices(self.DEVICE_IDS, plugin=self) # to support modern firmware self.device_manager().register_vendor_ids(self.VENDOR_IDS, plugin=self)
def unpaired_device_infos( self, handler: Optional[HardwareHandlerBase], plugin: HW_PluginBase, devices: List[Device] = None) -> List['DeviceInfo']: '''Returns a list of DeviceInfo objects: one for each connected, unpaired device accepted by the plugin.''' if devices is None: devices = self.scan_devices() devices = [dev for dev in devices if not self.xpub_by_id(dev.id_)] infos = [] for device in devices: if not plugin.can_recognize_device(device): continue client = self.create_client(device, handler, plugin) if not client: continue infos.append( DeviceInfo( device=device, label=client.label(), initialized=client.is_initialized(), model_name=client.device_model_name(), )) return infos
def create_client(self, device: Device, handler: HardwareHandlerBase, plugin: HW_PluginBase) -> Optional[HardwareClientBase]: # Get from cache first client = self._client_by_id(device.id_) if client: return client client = plugin.create_client(device, handler) if client: self.print_error("Registering", client) with self.lock: self.clients[client] = (device.path, device.id_) return client
def __init__(self, parent, config, name): HW_PluginBase.__init__(self, parent, config, name) try: from electroncash_plugins.keepkey import client import keepkeylib import keepkeylib.ckd_public import keepkeylib.transport_hid import keepkeylib.transport_webusb from usb1 import USBContext self.client_class = client.KeepKeyClient self.ckd_public = keepkeylib.ckd_public self.types = keepkeylib.client.types self.DEVICE_IDS = (keepkeylib.transport_hid.DEVICE_IDS + keepkeylib.transport_webusb.DEVICE_IDS) self.device_manager().register_devices(self.DEVICE_IDS) self.device_manager().register_enumerate_func(self.enumerate) self.usb_context = USBContext() self.usb_context.open() self.libraries_available = True except ImportError: self.libraries_available = False
def __init__(self, parent, config, name): HW_PluginBase.__init__(self, parent, config, name) if self.libraries_available: self.device_manager().register_devices(self.DEVICE_IDS)