levels reworked

comp generator function added to util.

patch  bump
This commit is contained in:
onyx-and-iris 2022-07-09 12:26:53 +01:00
parent 845ef2441e
commit a1d6cf1042
4 changed files with 23 additions and 15 deletions

View File

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "vban-cmd" name = "vban-cmd"
version = "1.1.2" version = "1.1.3"
description = "Python interface for the VBAN RT Packet Service (Sendtext)" description = "Python interface for the VBAN RT Packet Service (Sendtext)"
authors = ["onyx-and-iris <code@onyxandiris.online>"] authors = ["onyx-and-iris <code@onyxandiris.online>"]
license = "MIT" license = "MIT"

View File

@ -14,7 +14,7 @@ from .packet import (
VBAN_VMRT_Packet_Header, VBAN_VMRT_Packet_Header,
) )
from .subject import Subject from .subject import Subject
from .util import script from .util import comp, script
Socket = IntEnum("Socket", "register request response", start=0) Socket = IntEnum("Socket", "register request response", start=0)
@ -170,14 +170,8 @@ class VbanCmd(metaclass=ABCMeta):
def ldirty(self): def ldirty(self):
"""True iff a level value has changed.""" """True iff a level value has changed."""
self._strip_comp, self._bus_comp = ( self._strip_comp, self._bus_comp = (
tuple( tuple(not x for x in comp(self.cache["strip_level"], self._strip_buf)),
not a == b tuple(not x for x in comp(self.cache["bus_level"], self._bus_buf)),
for a, b in zip(self._public_packet.inputlevels, self._strip_buf)
),
tuple(
not a == b
for a, b in zip(self._public_packet.outputlevels, self._bus_buf)
),
) )
return any(any(l) for l in (self._strip_comp, self._bus_comp)) return any(any(l) for l in (self._strip_comp, self._bus_comp))
@ -201,8 +195,8 @@ class VbanCmd(metaclass=ABCMeta):
self._pdirty = self._pp.pdirty(self.public_packet) self._pdirty = self._pp.pdirty(self.public_packet)
if self.ldirty: if self.ldirty:
self.cache["strip_level"] = tuple(self._strip_buf) self.cache["strip_level"] = self._strip_buf
self.cache["bus_level"] = tuple(self._bus_buf) self.cache["bus_level"] = self._bus_buf
self.subject.notify("ldirty") self.subject.notify("ldirty")
if self.public_packet != self._pp: if self.public_packet != self._pp:
self._public_packet = self._pp self._public_packet = self._pp
@ -219,8 +213,8 @@ class VbanCmd(metaclass=ABCMeta):
strip levels in PREFADER mode. strip levels in PREFADER mode.
""" """
return ( return (
[val for val in packet.inputlevels], tuple(val for val in packet.inputlevels),
[val for val in packet.outputlevels], tuple(val for val in packet.outputlevels),
) )
def apply(self, data: dict): def apply(self, data: dict):

View File

@ -71,7 +71,6 @@ class BusLevel(IRemote):
def getter(self): def getter(self):
"""Returns a tuple of level values for the channel.""" """Returns a tuple of level values for the channel."""
range_ = self.level_map[self.index]
return tuple( return tuple(
round(-i * 0.01, 1) round(-i * 0.01, 1)
for i in self._remote.cache["bus_level"][self.range[0] : self.range[-1]] for i in self._remote.cache["bus_level"][self.range[0] : self.range[-1]]

View File

@ -1,3 +1,6 @@
from typing import Iterator
def cache_bool(func, param): def cache_bool(func, param):
"""Check cache for a bool prop""" """Check cache for a bool prop"""
@ -49,3 +52,15 @@ def script(func):
return func(remote, script) return func(remote, script)
return wrapper return wrapper
def comp(t0: tuple, t1: tuple) -> Iterator[bool]:
"""
Generator function, accepts two tuples.
Evaluates equality of each member in both tuples.
"""
for a, b in zip(t0, t1):
if b <= 9500:
yield a == b
yield True