frappy_psi/parmod: fix Driv
registering updates should be done in initModules
This commit is contained in:
parent
25986d67aa
commit
4892c2fd8f
@ -54,6 +54,7 @@ class Par(Readable):
|
||||
|
||||
|
||||
class Driv(Drivable):
|
||||
# this should be Writable instead!
|
||||
value = Parameter(datatype=FloatRange(unit='$'))
|
||||
target = Parameter(datatype=FloatRange(unit='$'))
|
||||
read = Attached(description='<module>.<parameter> for read')
|
||||
@ -64,10 +65,10 @@ class Driv(Drivable):
|
||||
|
||||
def setProperty(self, key, value):
|
||||
# split properties read/write (including .<param>)
|
||||
# into read/write (modules) and read_param/write_param (parameters)
|
||||
# into read/write (modules) and _read_param/_write_param (parameters)
|
||||
if key in ('read', 'write'):
|
||||
value, param = value.split('.')
|
||||
setattr(self, f'{key}_param', param)
|
||||
setattr(self, f'_{key}_param', param)
|
||||
super().setProperty(key, value)
|
||||
|
||||
def checkProperties(self):
|
||||
@ -76,14 +77,15 @@ class Driv(Drivable):
|
||||
raise ConfigError('illegal recursive read/write module')
|
||||
super().checkProperties()
|
||||
|
||||
def registerUpdates(self):
|
||||
if self.read_param == 'value':
|
||||
def initModule(self):
|
||||
super().initModule()
|
||||
if self._read_param == 'value':
|
||||
try:
|
||||
self.read.addCallback('status', self.updateReadStatus)
|
||||
except KeyError:
|
||||
pass # may be not needed: value is present but not status
|
||||
self.read.addCallback(self.read_param, self.updateValue)
|
||||
self.write.addCallback(self.write_param, self.announceUpdate, 'target')
|
||||
self.read.addCallback(self._read_param, self.updateValue)
|
||||
self.write.addCallback(self._write_param, self.announceUpdate, 'target')
|
||||
|
||||
def updateReadStatus(self, status, err=None):
|
||||
self.__status = status
|
||||
@ -95,17 +97,17 @@ class Driv(Drivable):
|
||||
self.__error = err
|
||||
self.read_status()
|
||||
|
||||
def startModule(self, start_events):
|
||||
start_events.queue(self.registerUpdates)
|
||||
super().startModule(start_events)
|
||||
#def startModule(self, start_events):
|
||||
# start_events.queue(self.registerUpdates)
|
||||
# super().startModule(start_events)
|
||||
|
||||
@nopoll
|
||||
def read_value(self):
|
||||
return getattr(self.read, f'read_{self.read_param}')()
|
||||
return getattr(self.read, f'read_{self._read_param}')()
|
||||
|
||||
@nopoll
|
||||
def read_target(self):
|
||||
return getattr(self.write, f'read_{self.write_param}')()
|
||||
return getattr(self.write, f'read_{self._write_param}')()
|
||||
|
||||
@nopoll
|
||||
def read_status(self):
|
||||
@ -116,7 +118,7 @@ class Driv(Drivable):
|
||||
return (ERROR, repr(self.__error)) if self.__error else (IDLE, '')
|
||||
|
||||
def write_target(self, target):
|
||||
return getattr(self.write, f'write_{self.write_param}')(target)
|
||||
return getattr(self.write, f'write_{self._write_param}')(target)
|
||||
|
||||
|
||||
class Converging(HasConvergence, Driv):
|
||||
|
Loading…
x
Reference in New Issue
Block a user