improve async behaviour of parmod.Driv

Change-Id: I3889614a0deaba4ef13b86c6600b6f96bc502a39
This commit is contained in:
zolliker 2024-03-08 15:58:17 +01:00
parent 694b121c01
commit 7d02498b3d

View File

@ -22,7 +22,7 @@
"""modules to access parameters"""
from frappy.core import Drivable, EnumType, IDLE, Attached, StringType, Property, \
Parameter, FloatRange, BoolType, Readable, ERROR
Parameter, BoolType, FloatRange, Readable, ERROR, nopoll
from frappy.errors import ConfigError
from frappy_psi.convergence import HasConvergence
from frappy_psi.mixins import HasRamp
@ -72,19 +72,21 @@ class Driv(Drivable):
raise ConfigError('illegal recursive read/write module')
super().checkProperties()
#def registerUpdates(self):
# self.read.valueCallbacks[self.read_param].append(self.update_value)
# self.write.valueCallbacks[self.write_param].append(self.update_target)
#
#def startModule(self, start_events):
# start_events.queue(self.registerUpdates)
# super().startModule(start_events)
def registerUpdates(self):
self.read.addCallback(self.read_param, self.announceUpdate, 'value')
self.write.addCallback(self.write_param, self.announceUpdate, 'target')
def startModule(self, start_events):
start_events.queue(self.registerUpdates)
super().startModule(start_events)
@nopoll
def read_value(self):
return getattr(self.read, f'{self.read_param}')
return getattr(self.read, f'read_{self.read_param}')()
@nopoll
def read_target(self):
return getattr(self.write, f'{self.write_param}')
return getattr(self.write, f'read_{self.write_param}')()
def read_status(self):
return IDLE, ''
@ -130,7 +132,7 @@ def set_enabled(modobj, value):
def get_value(obj, default):
"""get the value of given module. if not valid, return the limit (min_high or max_low)"""
"""get the value of given module. if not valid, return the default"""
if not getattr(obj, 'enabled', True):
return default
# consider also that a value 0 is invalid