def _monitor_power_levels(self, tree_iter: Gtk.TreeIter, device: Device) -> None: if device["Address"] in self._monitored_devices: return assert self.Adapter is not None cinfo = conn_info(device["Address"], os.path.basename(self.Adapter.get_object_path())) try: cinfo.init() except ConnInfoReadError: logging.warning("Failed to get power levels, probably a LE device.") model = self.liststore assert isinstance(model, Gtk.TreeModel) r = Gtk.TreeRowReference.new(model, model.get_path(tree_iter)) self._update_power_levels(tree_iter, device, cinfo) GLib.timeout_add(1000, self._check_power_levels, r, cinfo, device["Address"]) self._monitored_devices.add(device["Address"])
def monitor_power_levels(self, device): def update(row_ref, cinfo, address): if not row_ref.valid(): dprint("stopping monitor (row does not exist)") cinfo.deinit() self.monitored_devices.remove(props["Address"]) return False if not self.get_model(): self.monitored_devices.remove(props["Address"]) return False tree_iter = self.get_model().get_iter(row_ref.get_path()) device = self.get(tree_iter, "device")["device"] if not device['Connected']: dprint("stopping monitor (not connected)") cinfo.deinit() self.level_setup_event(row_ref, device, None) self.monitored_devices.remove(props["Address"]) return False else: self.level_setup_event(row_ref, device, cinfo) return True props = device.get_properties() if "Connected" in props and props["Connected"] and props[ "Address"] not in self.monitored_devices: dprint("starting monitor") tree_iter = self.find_device(device) hci = os.path.basename(self.Adapter.get_object_path()) try: cinfo = conn_info(props["Address"], hci) except Exception as e: dprint("Failed to get power levels\n%s" % e) else: r = Gtk.TreeRowReference.new( self.get_model(), self.get_model().get_path(tree_iter)) self.level_setup_event(r, device, cinfo) GLib.timeout_add(1000, update, r, cinfo, props["Address"]) self.monitored_devices.append(props["Address"])
def monitor_power_levels(self, device: Device) -> None: def update(row_ref: Gtk.TreeRowReference, cinfo: conn_info, address: str) -> bool: if not row_ref.valid(): logging.warning("stopping monitor (row does not exist)") cinfo.deinit() self.monitored_devices.remove(address) return False if not self.get_model(): self.monitored_devices.remove(address) return False if not device['Connected']: logging.info("stopping monitor (not connected)") cinfo.deinit() self.level_setup_event(row_ref, device, None) self.monitored_devices.remove(address) return False else: self.level_setup_event(row_ref, device, cinfo) return True bt_address = device["Address"] if device["Connected"] and bt_address not in self.monitored_devices: logging.info("starting monitor") tree_iter = self.find_device(device) assert self.Adapter is not None hci = os.path.basename(self.Adapter.get_object_path()) cinfo = conn_info(bt_address, hci) try: cinfo.init() except ConnInfoReadError: logging.warning( "Failed to get power levels, probably a LE device.") r = Gtk.TreeRowReference.new(self.get_model(), self.get_model().get_path(tree_iter)) self.level_setup_event(r, device, cinfo) GLib.timeout_add(1000, update, r, cinfo, bt_address) self.monitored_devices.append(bt_address)
def monitor_power_levels(self, device): def update(row_ref, cinfo, address): if not row_ref.valid(): dprint("stopping monitor (row does not exist)") cinfo.deinit() self.monitored_devices.remove(props["Address"]) return False if not self.get_model(): self.monitored_devices.remove(props["Address"]) return False iter = self.get_model().get_iter(row_ref.get_path()) device = self.get(iter, "device")["device"] if not device.Valid or not device.Connected: dprint("stopping monitor (not connected)") cinfo.deinit() self.level_setup_event(row_ref, device, None) self.monitored_devices.remove(props["Address"]) return False else: self.level_setup_event(row_ref, device, cinfo) return True props = device.get_properties() if "Connected" in props and props["Connected"] and props["Address"] not in self.monitored_devices: dprint("starting monitor") iter = self.find_device(device) hci = os.path.basename(self.Adapter.get_object_path()) try: cinfo = conn_info(props["Address"], hci) except Exception as e: dprint("Failed to get power levels\n%s" % e) else: r = Gtk.TreeRowReference.new(self.get_model(), self.get_model().get_path(iter)) self.level_setup_event(r, device, cinfo) GObject.timeout_add(1000, update, r, cinfo, props["Address"]) self.monitored_devices.append(props["Address"])
def monitor_power_levels(self, device): def update(row_ref, cinfo, address): if not row_ref.valid(): logging.warning("stopping monitor (row does not exist)") cinfo.deinit() self.monitored_devices.remove(address) return False if not self.get_model(): self.monitored_devices.remove(address) return False if not device['Connected']: logging.info("stopping monitor (not connected)") cinfo.deinit() self.level_setup_event(row_ref, device, None) self.monitored_devices.remove(address) return False else: self.level_setup_event(row_ref, device, cinfo) return True bt_address = device["Address"] if device["Connected"] and bt_address not in self.monitored_devices: logging.info("starting monitor") tree_iter = self.find_device(device) hci = os.path.basename(self.Adapter.get_object_path()) cinfo = conn_info(bt_address, hci) try: cinfo.init() except ConnInfoReadError: logging.warning("Failed to get power levels, probably a LE device.") r = Gtk.TreeRowReference.new(self.get_model(), self.get_model().get_path(tree_iter)) self.level_setup_event(r, device, cinfo) GLib.timeout_add(1000, update, r, cinfo, bt_address) self.monitored_devices.append(bt_address)