def search_driver(self, hwid, sender=None, conn=None): '''Search drivers matching a HardwareID. This also finds drivers for hardware which is not present locally and thus checks all the driver DBs again. Mode can be "any" (default) to return all available drivers, or "free"/"nonfree" to select by license. ''' # TODO: support freeness mode self._reset_timeout() self._check_polkit_privilege(sender, conn, 'com.ubuntu.devicedriver.info') (t, i) = hwid.split(':', 1) hardware_id = detection.HardwareID(t, i) recommended = [] nonrecommended = [] for db in self.driver_dbs: db.update([hardware_id]) handlers = detection.get_handlers(self, self.driver_dbs, hardware=[hardware_id], hardware_only=True) for h in handlers: id = h.id() if id not in self.handlers: self.handlers[id] = h if h.recommended(): recommended.append(id) else: nonrecommended.append(id) return recommended + nonrecommended
def _detect_handlers(self): '''Detect available handlers and their state. This initializes self.handlers as id → Handler map.''' self.handlers = {} # shortcut if we do not have package repos if not self.has_repositories(): logging.warning('_detect_handlers(): No package repositories available, skipping check') return for h in detection.get_handlers(self, self.driver_dbs, handler_dir=self.handler_dir, hardware=self.hardware): self.handlers[h.id()] = h
def _detect_handlers(self): '''Detect available handlers and their state. This initializes self.handlers as id → Handler map.''' self.handlers = {} # shortcut if we do not have package repos if not self.has_repositories(): logging.warning( '_detect_handlers(): No package repositories available, skipping check' ) return for h in detection.get_handlers(self, self.driver_dbs, handler_dir=self.handler_dir, hardware=self.hardware): self.handlers[h.id()] = h