fixed query of name/serial for devices
This commit is contained in:
parent
b2db0706c6
commit
6602d7ee13
|
@ -105,13 +105,11 @@ class _FeaturesArray(object):
|
|||
class DeviceInfo(_api.PairedDevice):
|
||||
"""A device attached to the receiver.
|
||||
"""
|
||||
def __init__(self, listener, number, serial_prefix, status=STATUS.UNKNOWN):
|
||||
def __init__(self, listener, number, status=STATUS.UNKNOWN):
|
||||
super(DeviceInfo, self).__init__(listener.handle, number)
|
||||
|
||||
self.LOG = _Logger("Device[%d]" % number)
|
||||
self._listener = listener
|
||||
self._pair_code = _pack('!B', 0x40 + number - 1)
|
||||
self._serial_prefix = _base._hex(serial_prefix)
|
||||
self._serial = None
|
||||
self._codename = None
|
||||
|
||||
|
@ -182,18 +180,17 @@ class DeviceInfo(_api.PairedDevice):
|
|||
@property
|
||||
def serial(self):
|
||||
if self._serial is None:
|
||||
# dodgy
|
||||
b = bytearray(self._pair_code)
|
||||
b[0] -= 0x10
|
||||
serial = _base.request(self.handle, 0xFF, b'\x83\xB5', bytes(b))
|
||||
if serial:
|
||||
self._serial = self._serial_prefix + '-' + _base._hex(serial[1:5])
|
||||
return self._serial or self._serial_prefix + '-?'
|
||||
prefix = _base.request(self.handle, 0xFF, b'\x83\xB5', 0x20 + self.number - 1)
|
||||
prefix = (_base._hex(prefix[3:5]) + '-') if prefix else ''
|
||||
serial = _base.request(self.handle, 0xFF, b'\x83\xB5', 0x30 + self.number - 1)
|
||||
serial = _base._hex(serial[1:5]) if serial else '?'
|
||||
self._serial = prefix + serial
|
||||
return self._serial or '?'
|
||||
|
||||
@property
|
||||
def codename(self):
|
||||
if self._codename is None:
|
||||
codename = _base.request(self.handle, 0xFF, b'\x83\xB5', self._pair_code)
|
||||
codename = _base.request(self.handle, 0xFF, b'\x83\xB5', 0x40 + self.number - 1)
|
||||
if codename:
|
||||
self._codename = codename[2:].rstrip(b'\x00').decode('ascii')
|
||||
return self._codename or '?'
|
||||
|
@ -345,8 +342,7 @@ class ReceiverListener(_EventsListener):
|
|||
|
||||
status = self._device_status_from(event)
|
||||
if status is not None:
|
||||
serial_prefix = event.data[-1:] + event.data[-2:-1]
|
||||
dev = DeviceInfo(self, event.devnumber, serial_prefix, status)
|
||||
dev = DeviceInfo(self, event.devnumber, status)
|
||||
self.LOG.info("new device %s", dev)
|
||||
self.status_changed(dev, True)
|
||||
return dev
|
||||
|
|
Loading…
Reference in New Issue