Aggressively cache properties
which are not expected to change at run time
This commit is contained in:
parent
3aa6b13615
commit
4dc42ee6f5
1 changed files with 22 additions and 3 deletions
|
@ -232,8 +232,13 @@ class ChargeController:
|
||||||
def __init__(self, device: BaseInterface):
|
def __init__(self, device: BaseInterface):
|
||||||
self.device = device
|
self.device = device
|
||||||
|
|
||||||
|
_cached_serial: str | None = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def serial(self) -> str:
|
def serial(self) -> str:
|
||||||
|
if self._cached_serial is not None:
|
||||||
|
return self._cached_serial
|
||||||
|
|
||||||
data = readMemory(self.device, 0x18, 3)
|
data = readMemory(self.device, 0x18, 3)
|
||||||
if data is None:
|
if data is None:
|
||||||
raise IOError # FIXME: Raise specific error in readMemory
|
raise IOError # FIXME: Raise specific error in readMemory
|
||||||
|
@ -241,18 +246,31 @@ class ChargeController:
|
||||||
p1 = data[0]
|
p1 = data[0]
|
||||||
p2 = data[1]
|
p2 = data[1]
|
||||||
p3 = (data[2] << 8) + data[3]
|
p3 = (data[2] << 8) + data[3]
|
||||||
return f"{p1}-{p2}-{p3}"
|
|
||||||
|
self._cached_serial = f"{p1}-{p2}-{p3}"
|
||||||
|
return self._cached_serial
|
||||||
|
|
||||||
|
_cached_model: str | None = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def model(self) -> str:
|
def model(self) -> str:
|
||||||
|
if self._cached_model is not None:
|
||||||
|
return self._cached_model
|
||||||
|
|
||||||
data = readMemory(self.device, 0x0C, 8)
|
data = readMemory(self.device, 0x0C, 8)
|
||||||
if data is None:
|
if data is None:
|
||||||
raise IOError # FIXME: Raise specific error in readMemory
|
raise IOError # FIXME: Raise specific error in readMemory
|
||||||
|
|
||||||
return data.decode("utf-8").strip()
|
self._cached_model = data.decode("utf-8").strip()
|
||||||
|
return self._cached_model
|
||||||
|
|
||||||
|
_cached_version: str | None = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def version(self) -> str:
|
def version(self) -> str:
|
||||||
|
if self._cached_version is not None:
|
||||||
|
return self._cached_version
|
||||||
|
|
||||||
data = readMemory(self.device, 0x14, 4)
|
data = readMemory(self.device, 0x14, 4)
|
||||||
if data is None:
|
if data is None:
|
||||||
raise IOError # FIXME: Raise specific error in readMemory
|
raise IOError # FIXME: Raise specific error in readMemory
|
||||||
|
@ -261,7 +279,8 @@ class ChargeController:
|
||||||
minor = data[2]
|
minor = data[2]
|
||||||
patch = data[3]
|
patch = data[3]
|
||||||
|
|
||||||
return f"{major}.{minor}.{patch}"
|
self._cached_version = f"{major}.{minor}.{patch}"
|
||||||
|
return self._cached_version
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def load_enabled(self) -> bool:
|
def load_enabled(self) -> bool:
|
||||||
|
|
Loading…
Reference in a new issue