From a96caea5e48dadfb661568bdc1725a8c6f2c2697 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Mon, 1 Nov 2021 21:30:50 -0400 Subject: [PATCH] receiver: move receiver codename code from device class to receiver class --- lib/logitech_receiver/device.py | 15 +++++---------- lib/logitech_receiver/receiver.py | 7 +++++++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/logitech_receiver/device.py b/lib/logitech_receiver/device.py index bb7e4622..17a1234d 100644 --- a/lib/logitech_receiver/device.py +++ b/lib/logitech_receiver/device.py @@ -148,13 +148,10 @@ class Device: self.descriptor = _descriptors.get_wpid(self.wpid) if self.descriptor is None: - # Last chance to correctly identify the device; many Nano - # receivers do not support this call. - codename = self.receiver.read_register(_R.receiver_info, _IR.device_name + self.number - 1) + # Last chance to correctly identify the device; many Nano receivers do not support this call. + codename = self.receiver.device_codename(self.number) if codename: - codename_length = ord(codename[1:2]) - codename = codename[2:2 + codename_length] - self._codename = codename.decode('ascii') + self._codename = codename self.descriptor = _descriptors.get_codename(self._codename) else: self.path = info.path @@ -199,11 +196,9 @@ class Device: if not self._codename: self._codename = self.name.split(' ', 1)[0] if self.name else None elif self.receiver: - codename = self.receiver.read_register(_R.receiver_info, _IR.device_name + self.number - 1) + codename = self.receiver.device_codename(self.number) if codename: - codename_length = ord(codename[1:2]) - codename = codename[2:2 + codename_length] - self._codename = codename.decode('utf-8') + self._codename = codename elif self.protocol < 2.0: self._codename = '? (%s)' % (self.wpid or self.product_id) return self._codename if self._codename else '?? (%s)' % (self.wpid or self.product_id) diff --git a/lib/logitech_receiver/receiver.py b/lib/logitech_receiver/receiver.py index 2647a318..6951b235 100644 --- a/lib/logitech_receiver/receiver.py +++ b/lib/logitech_receiver/receiver.py @@ -135,6 +135,13 @@ class Receiver: _log.info('%s: receiver notifications %s => %s', self, 'enabled' if enable else 'disabled', flag_names) return flag_bits + def device_codename(self, n): + codename = self.read_register(_R.receiver_info, _IR.device_name + n - 1) + if codename: + codename_length = ord(codename[1:2]) + codename = codename[2:2 + codename_length] + return codename.decode('ascii') + def notify_devices(self): """Scan all devices.""" if self.handle: