Fixed init inconsitencies on DeriveUnit IO queues as well as function naming. Updated test to stream output
51 lines
1.0 KiB
Python
51 lines
1.0 KiB
Python
from uuid import uuid4
|
|
from dynalab_core.derive import DeriveUnit
|
|
from dynalab_core.protocols.packets.data import ValueDescriptor
|
|
from dynalab_core.protocols.packets.handshake import SignalDescriptor
|
|
|
|
|
|
def process(
|
|
a: ValueDescriptor,
|
|
b: ValueDescriptor,
|
|
r: SignalDescriptor,
|
|
) -> ValueDescriptor:
|
|
val = ValueDescriptor(
|
|
signal_id=r.id, value=a.value + b.value, timestamp=a.timestamp
|
|
)
|
|
return val
|
|
|
|
|
|
sig_a = SignalDescriptor(
|
|
id=uuid4(),
|
|
name="Signal A",
|
|
type="number",
|
|
)
|
|
|
|
sig_b = SignalDescriptor(
|
|
id=uuid4(),
|
|
name="Signal A",
|
|
type="number",
|
|
)
|
|
|
|
sig_r = SignalDescriptor(
|
|
id=uuid4(),
|
|
name="Signal R",
|
|
type="number",
|
|
)
|
|
|
|
unit = DeriveUnit(uuid4(), process, [sig_a, sig_b], sig_r)
|
|
|
|
val_a = ValueDescriptor(signal_id=sig_a.id, value=1, timestamp=0)
|
|
val_b = ValueDescriptor(signal_id=sig_a.id, value=2, timestamp=10)
|
|
|
|
unit.put_data([val_a, val_b])
|
|
|
|
try:
|
|
while True:
|
|
output = unit.get_output()
|
|
if output is not None:
|
|
print(output)
|
|
|
|
except KeyboardInterrupt:
|
|
exit(0)
|