From 277523c7d552650a122fd147fbcee6b8afab2a95 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Wed, 31 Jan 2018 18:37:17 +0100 Subject: [PATCH] kete: stop listening when pairing a device Or the internal state of kete is that the device is listening while tuhi says it is not. --- tools/tuhi-kete.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/tools/tuhi-kete.py b/tools/tuhi-kete.py index 535d50b..5039f90 100755 --- a/tools/tuhi-kete.py +++ b/tools/tuhi-kete.py @@ -578,7 +578,8 @@ class TuhiKeteShell(cmd.Cmd): return names def _on_name_vanished(self, manager): - logger.debug('Tuhi daemon went away, I should stop the current workers') + logger.debug('Tuhi daemon went away, terminating the current workers') + self.terminate_workers() def emptyline(self): # make sure we do not re-enter the last typed command @@ -590,8 +591,7 @@ class TuhiKeteShell(cmd.Cmd): def do_exit(self, args): '''Leave the shell''' - for worker in self._workers: - worker.stop() + self.terminate_workers() return True def precmd(self, line): @@ -620,6 +620,15 @@ class TuhiKeteShell(cmd.Cmd): worker.run() self._workers.append(worker) + def terminate_worker(self, worker): + worker.stop() + self._workers.remove(worker) + + def terminate_workers(self): + for worker in self._workers: + worker.stop() + self._workers = [] + def do_devices(self, arg): '''List known devices. These are devices previously paired with the daemon.''' logger.debug('Listing available devices:') @@ -687,8 +696,7 @@ class TuhiKeteShell(cmd.Cmd): if mode == 'off': for worker in [w for w in self._workers if isinstance(w, Listener)]: if worker.device.address == address: - worker.stop() - self._workers.remove(worker) + self.terminate_worker(worker) break return @@ -832,8 +840,7 @@ class TuhiKeteShell(cmd.Cmd): self.start_worker(Searcher, parsed_args) else: if parsed_args.mode == 'off': - current_searcher.stop() - self._workers.remove(current_searcher) + self.terminate_worker(current_searcher) else: logger.info('Already searching') @@ -881,6 +888,11 @@ class TuhiKeteShell(cmd.Cmd): device = None + # make sure we do not keep a listener on the device + for worker in [w for w in self._workers if isinstance(w, Listener)]: + if worker.device.address == address: + self.terminate_worker(worker) + for d in self._manager.devices + self._manager.pairable_devices: if d.address == address: device = d