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