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:
parent
8c85a775a1
commit
0a71c97f69
@ -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):
|
||||||
|
@ -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):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user