def configure_hardware(self, device): from vmc.common.hardware.base import DeviceResolver def identify_dev_cb(model): self.device = device DeviceProfileCache.store(device) config.set_last_device(device.cached_id) hook_it_up(self.splash, DeviceListener(self.device), self.device) def identify_dev_eb(failure): failure.trap(SerialException) from vmc.gtk import dialogs info = dict(name=device.name, vmc=APP_LONG_NAME) message = _('Device setup not completed') details = _(""" %(vmc)s cannot connect with the selected device (%(name)s). """) % info dialogs.open_warning_dialog(message, details) config.set_last_device('') self.detect_hardware() d = DeviceResolver.identify_device(device) d.addCallback(identify_dev_cb) d.addErrback(identify_dev_eb)
def process_device_added(): properties = self.get_devices_properties() cached_id = None for device in DeviceProfileCache.get_cached_devices(): if device in properties: cached_id = device.cached_id for plugin in PluginManager.get_plugins(IDBusDevicePlugin): if plugin in properties: try: plugin.setup(properties) if cached_id: plugin.cached_id = cached_id if (plugin.udi in self.udi_device): continue self.udi_device[str(plugin.udi)] = plugin d = DeviceResolver.identify_device(plugin) def select_and_configure(name): try: plugin = \ PluginManager.get_plugin_by_remote_name(name) plugin.setup(properties) self.udi_device[str(plugin.udi)] = plugin self.device_list.append(plugin) self.view.device_added(plugin) except Exception, e: print e d.addCallback(select_and_configure) except Exception, e: pass
def get_plugin_for_remote_dev(self, speed, dport, cport): dev = UnknownDevicePlugin() from vmc.common.hardware.base import Customizer dev.custom = Customizer() dev.dport, dev.cport, dev.baudrate = dport, cport, speed d = DeviceResolver.identify_device(dev) d.addCallback(self.get_plugin_from_name, dev) return d
def get_devices(self): devices = [] try: found_plugins = self._get_dbus_devices() except: raise # found plugins might be potentially full of plugins that share the # vendor and product id (like Huawei's E220/E270/E272), we'll have to # do some cleaning while found_plugins: plugin = found_plugins.pop(0) model = waitForDeferred(DeviceResolver.identify_device(plugin)) yield model; model = model.getResult() foundplugin = self.get_plugin_from_name(model, plugin) if foundplugin and foundplugin not in devices: devices.append(foundplugin) yield devices; return
def get_unknown_device_plugin(dataport, controlport=None, baudrate=115200, name='Unknown Device', cached_id=None): """ Returns a C{UnknownDevicePlugin} instance configured with the given params """ from vmc.common.hardware.base import Customizer, DeviceResolver plugin = UnknownDevicePlugin() plugin.custom = Customizer() plugin.dport = dataport plugin.cport = controlport plugin.baudrate = baudrate plugin.name = name plugin.cached_id = cached_id def identify_device_cb(model): plugin.__remote_name__ = model return plugin d = DeviceResolver.identify_device(plugin) d.addCallback(identify_device_cb) return d
def get_devices(self): devices = [] try: found_plugins = self._get_dbus_devices() except: raise # found plugins might be potentially full of plugins that share the # vendor and product id (like Huawei's E220/E270/E272), we'll have to # do some cleaning while found_plugins: plugin = found_plugins.pop(0) model = waitForDeferred(DeviceResolver.identify_device(plugin)) yield model model = model.getResult() foundplugin = self.get_plugin_from_name(model, plugin) if foundplugin and foundplugin not in devices: devices.append(foundplugin) yield devices return
def __init__(self): super(HardwareRegistry, self).__init__() self.resolver = DeviceResolver()