From 0bc4a63aa7951beef0252aac2dad7749685bc31b Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Thu, 14 Sep 2023 09:05:00 +0200 Subject: [PATCH] add parmod.Par the reasonly class frappy_psi.parmod.Par represents a parameter or a component of a tuple parameter Change-Id: I47208c9d7a6fc377cd56b82cc6a9e8cdb433fe8e --- frappy_psi/parmod.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/frappy_psi/parmod.py b/frappy_psi/parmod.py index 58c3b3f..990a472 100644 --- a/frappy_psi/parmod.py +++ b/frappy_psi/parmod.py @@ -23,12 +23,36 @@ """modules to access parameters""" from frappy.core import Drivable, IDLE, Attached, StringType, Property, \ - Parameter, FloatRange + Parameter, FloatRange, Readable from frappy.errors import ConfigError from frappy_psi.convergence import HasConvergence from frappy_psi.mixins import HasRamp +class Par(Readable): + value = Parameter(datatype=FloatRange(unit='$')) + read = Attached(description='. for read') + unit = Property('main unit', StringType()) + + def setProperty(self, key, value): + if key == 'read': + value, param = value.split('.') + setattr(self, f'{key}_param', param) + super().setProperty(key, value) + + def checkProperties(self): + self.applyMainUnit(self.unit) + if self.read == self.name : + raise ConfigError('illegal recursive read/write module') + super().checkProperties() + + def read_value(self): + return getattr(self.read, f'{self.read_param}') + + def read_status(self): + return IDLE, '' + + class Driv(Drivable): value = Parameter(datatype=FloatRange(unit='$')) target = Parameter(datatype=FloatRange(unit='$'))