refactor levels.

only compute strip/bus comp tuples if ldirty.

add comp generator function to util.

added some docstrings

patch bump
This commit is contained in:
onyx-and-iris
2022-07-09 11:06:48 +01:00
parent 210c75ed5f
commit e979595a09
5 changed files with 67 additions and 28 deletions

View File

@@ -116,16 +116,21 @@ class BusLevel(IRemote):
self.range = self.level_map[self.index]
def getter(self, mode):
"""Returns a tuple of level values for the channel."""
"""
Returns a tuple of level values for the channel.
If observables thread running fetch values from cache otherwise call CAPI func.
"""
def fget(i):
if self._remote.running and "bus_level" in self._remote.cache:
res = self._remote.cache["bus_level"][i]
else:
res = self._remote.get_level(mode, i)
return round(20 * log(res, 10), 1) if res > 0 else -200.0
return round(20 * log(i, 10), 1) if i > 0 else -200.0
return tuple(fget(i) for i in range(*self.range))
if self._remote.running and "bus_level" in self._remote.cache:
vals = self._remote.cache["bus_level"][self.range[0] : self.range[-1]]
else:
vals = [self._remote.get_level(mode, i) for i in range(*self.range)]
return tuple(fget(i) for i in vals)
@property
def identifier(self) -> str:
@@ -137,7 +142,13 @@ class BusLevel(IRemote):
@property
def is_updated(self) -> bool:
return any(self._remote._bus_comp[self.range[0] : self.range[-1]])
"""
Returns dirty status for this specific channel.
Expected to be used in a callback only.
"""
if self._remote.running:
return any(self._remote._bus_comp[self.range[0] : self.range[-1]])
def _make_bus_mode_mixin():