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

View File

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