allow Override also for Commands

modified cryo.py for using Override correctly, here the description of the stop command is overridden

Change-Id: I060a2802226239f3af3dc1e573b7148d863b938c
Reviewed-on: https://forge.frm2.tum.de/review/19607
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
zolliker 2018-12-13 11:47:08 +01:00 committed by Enrico Faulhaber
parent 8c85a775a1
commit 0a71c97f69
2 changed files with 11 additions and 13 deletions

View File

@ -136,9 +136,9 @@ class Override(CountedObj):
return '%s_%d(%s)' % (self.__class__.__name__, self.ctr, ', '.join( return '%s_%d(%s)' % (self.__class__.__name__, self.ctr, ', '.join(
['%s=%r' % (k, v) for k, v in sorted(self.kwds.items())])) ['%s=%r' % (k, v) for k, v in sorted(self.kwds.items())]))
def apply(self, paramobj): def apply(self, obj):
if isinstance(paramobj, Parameter): if isinstance(obj, CountedObj):
props = paramobj.__dict__.copy() props = obj.__dict__.copy()
for k, v in self.kwds.items(): for k, v in self.kwds.items():
if k in props: if k in props:
props[k] = v props[k] = v
@ -147,11 +147,11 @@ class Override(CountedObj):
"Can not apply Override(%s=%r) to %r: non-existing property!" % "Can not apply Override(%s=%r) to %r: non-existing property!" %
(k, v, props)) (k, v, props))
props['ctr'] = self.ctr props['ctr'] = self.ctr
return Parameter(**props) return type(obj)(**props)
else: else:
raise ProgrammingError( raise ProgrammingError(
"Overrides can only be applied to Parameter's, %r is none!" % "Overrides can only be applied to Parameter's, %r is none!" %
paramobj) obj)
class Command(CountedObj): class Command(CountedObj):

View File

@ -28,7 +28,7 @@ from math import atan
from secop.datatypes import EnumType, FloatRange, TupleOf from secop.datatypes import EnumType, FloatRange, TupleOf
from secop.lib import clamp, mkthread from secop.lib import clamp, mkthread
from secop.modules import Command, Drivable, Parameter from secop.modules import Drivable, Parameter, Override
class CryoBase(Drivable): class CryoBase(Drivable):
@ -75,11 +75,11 @@ class Cryostat(CryoBase):
datatype=FloatRange(0), default=0, unit="W", datatype=FloatRange(0), default=0, unit="W",
group='heater_settings', group='heater_settings',
), ),
target=Parameter("target temperature", target=Override("target temperature",
datatype=FloatRange(0), default=0, unit="K", datatype=FloatRange(0), default=0, unit="K",
readonly=False, readonly=False,
), ),
value=Parameter("regulation temperature", value=Override("regulation temperature",
datatype=FloatRange(0), default=0, unit="K", datatype=FloatRange(0), default=0, unit="K",
), ),
pid=Parameter("regulation coefficients", pid=Parameter("regulation coefficients",
@ -105,7 +105,7 @@ class Cryostat(CryoBase):
default='ramp', default='ramp',
readonly=False, readonly=False,
), ),
pollinterval=Parameter("polling interval", pollinterval=Override("polling interval",
datatype=FloatRange(0), default=5, datatype=FloatRange(0), default=5,
), ),
tolerance=Parameter("temperature range for stability checking", tolerance=Parameter("temperature range for stability checking",
@ -125,10 +125,8 @@ class Cryostat(CryoBase):
), ),
) )
commands = dict( commands = dict(
stop=Command( stop=Override(
"Stop ramping the setpoint\n\nby setting the current setpoint as new target", "Stop ramping the setpoint\n\nby setting the current setpoint as new target"),
None,
None),
) )
def init_module(self): def init_module(self):