cli: force unpairing attempt when using cli

This commit is contained in:
Peter F. Patel-Schneider 2020-02-26 09:27:24 -05:00 committed by Filipe Laíns
parent 8dbc4b5707
commit eda1399330
2 changed files with 7 additions and 5 deletions

View File

@ -478,6 +478,9 @@ class Receiver(object):
return self.register_new_device(key)
def __delitem__(self, key):
self._unpair_device(self, key, False)
def _unpair_device(self, key, force=False):
key = int(key)
if self._devices.get(key) is None:
@ -489,7 +492,7 @@ class Receiver(object):
del self._devices[key]
return
if self.re_pairs:
if self.re_pairs and not force:
# invalidate the device, but these receivers don't unpair per se
dev.online = False
dev.wpid = None

View File

@ -28,13 +28,12 @@ def run(receivers, args, find_receiver, find_device):
dev = find_device(receivers, device_name)
if not dev.receiver.may_unpair:
print('Receiver for %s [%s:%s] does not unpair' % (dev.name,dev.wpid,dev.serial))
return
print('Receiver for %s [%s:%s] does not unpair, but attempting anyway' % (dev.name,dev.wpid,dev.serial))
# query these now, it's last chance to get them
try:
# query these now, it's last chance to get them
number, codename, wpid, serial = dev.number, dev.codename, dev.wpid, dev.serial
del dev.receiver[number]
dev.receiver._unpair_device(number, True) # force an unpair
print ('Unpaired %d: %s (%s) [%s:%s]' % (number, dev.name, codename, wpid, serial))
except Exception as e:
raise Exception('failed to unpair device %s: %s' % (dev.name, e))