configure: keep track of serial numbers in configuration file
This commit is contained in:
parent
985ebd46cd
commit
1bd68177ab
|
@ -36,6 +36,7 @@ _file_path = _path.join(_XDG_CONFIG_HOME, 'solaar', 'config.json')
|
||||||
|
|
||||||
_KEY_VERSION = '_version'
|
_KEY_VERSION = '_version'
|
||||||
_KEY_NAME = '_name'
|
_KEY_NAME = '_name'
|
||||||
|
_KEY_SERIAL = '_serial'
|
||||||
_KEY_MODEL_ID = '_modelId'
|
_KEY_MODEL_ID = '_modelId'
|
||||||
_KEY_UNIT_ID = '_unitId'
|
_KEY_UNIT_ID = '_unitId'
|
||||||
_configuration = {}
|
_configuration = {}
|
||||||
|
@ -114,6 +115,8 @@ class _DeviceEntry(dict):
|
||||||
self[_KEY_MODEL_ID] = device.modelId
|
self[_KEY_MODEL_ID] = device.modelId
|
||||||
if device.unitId and device.unitId != self.get(_KEY_UNIT_ID):
|
if device.unitId and device.unitId != self.get(_KEY_UNIT_ID):
|
||||||
self[_KEY_UNIT_ID] = device.unitId
|
self[_KEY_UNIT_ID] = device.unitId
|
||||||
|
if device.serial and device.serial != '?' and device.serial != self.get(_KEY_SERIAL):
|
||||||
|
self[_KEY_SERIAL] = device.serial
|
||||||
|
|
||||||
def get_sensitivity(self, name):
|
def get_sensitivity(self, name):
|
||||||
return self.get('_sensitive', {}).get(name, False)
|
return self.get('_sensitive', {}).get(name, False)
|
||||||
|
@ -125,6 +128,13 @@ class _DeviceEntry(dict):
|
||||||
self['_sensitive'] = sensitives
|
self['_sensitive'] = sensitives
|
||||||
|
|
||||||
|
|
||||||
|
# This is neccessarily complicate because the same device can be attached in several different ways.
|
||||||
|
# All HID++ 2.0 devices have a modelId and unitId, which can be accessed when they are connected.
|
||||||
|
# When paired via a receiver the receiver provides a WPID and a serial number.
|
||||||
|
# The unitId and serial number are supposed to be the same, but for some models they are not
|
||||||
|
# so even though the modelId includes the WPID it is not always possible to determine the identity of a
|
||||||
|
# paired but not receiver-connected device for which the unitId is not known.
|
||||||
|
# This only happens is Solaar has never seen the device while it is paired and connected through a receiver.
|
||||||
def persister(device):
|
def persister(device):
|
||||||
if not _configuration:
|
if not _configuration:
|
||||||
_load()
|
_load()
|
||||||
|
@ -155,6 +165,8 @@ def persister(device):
|
||||||
if key and not isinstance(entry, _DeviceEntry):
|
if key and not isinstance(entry, _DeviceEntry):
|
||||||
entry = _DeviceEntry(device, **entry)
|
entry = _DeviceEntry(device, **entry)
|
||||||
_configuration[key] = entry
|
_configuration[key] = entry
|
||||||
|
if isinstance(entry, _DeviceEntry):
|
||||||
|
entry.update(device)
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue