diff --git a/slic/core/adjustable/adjustable.py b/slic/core/adjustable/adjustable.py index 38d4ca7c4..95964fe20 100644 --- a/slic/core/adjustable/adjustable.py +++ b/slic/core/adjustable/adjustable.py @@ -6,8 +6,9 @@ from .convenience import SpecConvenience class Adjustable(BaseAdjustable, SpecConvenience): - def __init__(self, name=None, units=None, internal=False): - self.name = name + def __init__(self, ID, name=None, units=None, internal=False): + self.ID = ID + self.name = name or ID self.units = units self.internal = internal self.current_task = None diff --git a/slic/core/adjustable/dummyadjustable.py b/slic/core/adjustable/dummyadjustable.py index 0dfb70d91..317c96b9e 100644 --- a/slic/core/adjustable/dummyadjustable.py +++ b/slic/core/adjustable/dummyadjustable.py @@ -4,8 +4,8 @@ from .adjustable import Adjustable class DummyAdjustable(Adjustable): - def __init__(self, initial_value=0, name="Dummy", units=None, jitter=False): - super().__init__(name=name, units=units) + def __init__(self, initial_value=0, ID="DUMMY", name="Dummy", units=None, jitter=False): + super().__init__(ID, name=name, units=units) self._current_value = initial_value self._jitter = jitter diff --git a/slic/core/adjustable/genericadjustable.py b/slic/core/adjustable/genericadjustable.py index 702a63ef8..44d9bc383 100644 --- a/slic/core/adjustable/genericadjustable.py +++ b/slic/core/adjustable/genericadjustable.py @@ -3,8 +3,8 @@ from .adjustable import Adjustable class GenericAdjustable(Adjustable): - def __init__(self, set, get, wait=None, name=None, units=None, internal=False): - super().__init__(name=name, units=units, internal=internal) + def __init__(self, set, get, wait=None, ID="GENERIC", name=None, units=None, internal=False): + super().__init__(ID, name=name, units=units, internal=internal) self._set = set self._get = get self._wait = wait or self._generic_wait diff --git a/slic/core/adjustable/pvadjustable.py b/slic/core/adjustable/pvadjustable.py index 4ef7a72bf..2d8d0a9c1 100644 --- a/slic/core/adjustable/pvadjustable.py +++ b/slic/core/adjustable/pvadjustable.py @@ -13,14 +13,14 @@ class PVAdjustable(Adjustable): def __init__(self, pvname_setvalue, pvname_readback=None, pvname_stop=None, pvname_done_moving=None, pvname_moving=None, accuracy=None, active_move=False, process_time=0, wait_time=0.1, timeout=60, - name=None, internal=False + ID=None, name=None, internal=False ): pv_setvalue = PV(pvname_setvalue) pv_readback = PV(pvname_readback) if pvname_readback else pv_setvalue - name = name or pvname_readback or pvname_setvalue + ID = ID or pvname_readback or pvname_setvalue units = pv_readback.units - super().__init__(name=name, units=units, internal=internal) + super().__init__(ID, name=name, units=units, internal=internal) self.accuracy = accuracy self.active_move = active_move diff --git a/slic/core/adjustable/pvenumadjustable.py b/slic/core/adjustable/pvenumadjustable.py index 55886e438..a9657ec7d 100644 --- a/slic/core/adjustable/pvenumadjustable.py +++ b/slic/core/adjustable/pvenumadjustable.py @@ -5,13 +5,13 @@ from .adjustable import Adjustable class PVEnumAdjustable(Adjustable): - def __init__(self, pvname, name=None, internal=False): + def __init__(self, pvname, ID=None, name=None, internal=False): self.pvname = pvname self.pv = pv = PV(pvname) - name = name or pvname + ID = ID or pvname units = pv.units - super().__init__(name=name, units=units, internal=internal) + super().__init__(ID, name=name, units=units, internal=internal) self.states = Enum(pv.enum_strs) diff --git a/slic/devices/device.py b/slic/devices/device.py index 57538a112..5b76a19b2 100644 --- a/slic/devices/device.py +++ b/slic/devices/device.py @@ -8,7 +8,7 @@ class Device(BaseDevice): def __init__(self, ID, name=None, description=None, z_undulator=None): self.ID = ID - self.name = name + self.name = name or ID self.description = description self.z_undulator = decide_z(ID, z_undulator) diff --git a/slic/devices/general/delay_stage.py b/slic/devices/general/delay_stage.py index f3b835bbb..50be27d22 100755 --- a/slic/devices/general/delay_stage.py +++ b/slic/devices/general/delay_stage.py @@ -22,38 +22,25 @@ def pos_to_delay(pos): class DelayStage(Device): def __init__(self, ID, name=None, internal=False): - self.ID = ID - self.name = name = name or ID + super().__init__(ID, name=name) - self.motor = motor = Motor(ID, name, internal=internal) - self.delay = delay = Delay(motor, internal=internal) - - self.devices = { - "motor": motor, - "delay": delay - } - - - def __repr__(self): - return " | ".join(repr(d) for d in self.devices.values()) - - def __str__(self): - return " | ".join(str(d) for d in self.devices.values()) - - def get(self): - return {n: d.get_current_value() for n, d in self.devices.items()} + self.motor = motor = Motor(ID, name=name, internal=internal) + self.delay = Delay(motor, internal=internal) class Delay(Adjustable): - def __init__(self, motor, name=None, units="fs", internal=False): + def __init__(self, motor, ID=None, name=None, units="fs", internal=False): self._motor = motor + + ID = ID or motor.ID + "_AS_DELAY" name = name or motor.name + " as delay" - super().__init__(name=name, units=units, internal=internal) - self.pvname = motor.pvname + + super().__init__(ID, name=name, units=units, internal=internal) self.offset_pos = 0 + @property def current_task(self): return self._motor.current_task diff --git a/slic/devices/general/motor.py b/slic/devices/general/motor.py index e5f8d8bbd..2ab10113d 100644 --- a/slic/devices/general/motor.py +++ b/slic/devices/general/motor.py @@ -46,7 +46,7 @@ STATUS_MESSAGES = { class Motor(Adjustable, SpecConvenienceProgress): - def __init__(self, pvname, name=None, internal=False): + def __init__(self, pvname, ID=None, name=None, internal=False): self.pvname = pvname self._motor = motor = EpicsMotor(pvname) @@ -59,9 +59,9 @@ class Motor(Adjustable, SpecConvenienceProgress): units = motor.get_pv("EGU") ) - name = name or pvname + ID = ID or pvname units = self.pvs.units.value - super().__init__(name=name, units=units, internal=internal) + super().__init__(ID, name=name, units=units, internal=internal) self.status = None self.status_message = None diff --git a/slic/devices/general/smaract.py b/slic/devices/general/smaract.py index 5f9057e6d..bbacdef14 100644 --- a/slic/devices/general/smaract.py +++ b/slic/devices/general/smaract.py @@ -50,10 +50,8 @@ class SmarActStage(BaseDevice): class SmarActAxis(Adjustable): def __init__(self, ID, name=None, internal=False): - name = name or ID units = PV(ID + ":DRIVE.EGU").get() #TODO - super().__init__(name=name, units=units, internal=internal) - self.ID = ID + super().__init__(ID, name=name, units=units, internal=internal) self._move_requested = False diff --git a/slic/devices/timing/lasertiming.py b/slic/devices/timing/lasertiming.py index d46194906..2fdaa37be 100644 --- a/slic/devices/timing/lasertiming.py +++ b/slic/devices/timing/lasertiming.py @@ -25,8 +25,7 @@ class ETiming(Adjustable): name="Globi Laser Electronic Timing", units="ps" ): - super().__init__(name=name, units=units) - self.ID = ID + super().__init__(ID, name=name, units=units) self.pvnames = SimpleNamespace( setvalue = pvname_setvalue, @@ -79,8 +78,8 @@ class ETiming(Adjustable): class LXT(Adjustable): def __init__(self, ID_phase_shifter, ID_timing, base_folder, tolerance_poly_coeff=(100e-15, 1e-7), name="Laser X-ray Timing", units="s"): - super().__init__(name=name, units=units) - self.ID = ID = ID_phase_shifter #TODO: does that make sense? + ID = ID_phase_shifter + "_LXT" #TODO: does that make sense? + super().__init__(ID, name=name, units=units) self.tolerance_poly_coeff = tolerance_poly_coeff pvname_sdg1_readback = ID_timing + ":Pul2-Delay-RB" @@ -142,8 +141,7 @@ class LXT(Adjustable): class PhaseShifterAramis(Adjustable): def __init__(self, ID, base_folder, name=None): - super().__init__(name=name) - self.ID = ID + super().__init__(ID, name=name) self._phase_shifter = PhaseShifter(ID, base_folder) def set_target_value(self, value, hold=False): diff --git a/slic/devices/xoptics/attenuator_aramis.py b/slic/devices/xoptics/attenuator_aramis.py index a44f4c322..5f20f2616 100755 --- a/slic/devices/xoptics/attenuator_aramis.py +++ b/slic/devices/xoptics/attenuator_aramis.py @@ -5,10 +5,7 @@ from slic.core.adjustable import Adjustable class AttenuatorAramis(Adjustable): def __init__(self, ID, z_undulator=None, description=None, name="Attenuator Aramis"): - self.ID = ID - - name = name or ID - super().__init__(name=name, units=None) + super().__init__(ID, name=name, units=None) self._pv_status_str = PV(ID + ":MOT2TRANS.VALD") self._pv_status_int = PV(ID + ":IDX_RB") diff --git a/slic/devices/xoptics/dcm.py b/slic/devices/xoptics/dcm.py index 856e3de7c..cf553cce2 100755 --- a/slic/devices/xoptics/dcm.py +++ b/slic/devices/xoptics/dcm.py @@ -37,9 +37,8 @@ class DoubleCrystalMonoEnergy(Adjustable): pv_moving = PV(pvname_moving) pv_stop = PV(pvname_stop) - name = name or ID units = pv_readback.units - super().__init__(name=name, units=units) + super().__init__(ID, name=name, units=units) self.pvnames = SimpleNamespace( setvalue = pvname_setvalue, @@ -192,9 +191,8 @@ class CoupledDoubleCrystalMonoEnergy(Adjustable): pv_moving = PV(pvname_moving) pv_coupling = PV(pvname_coupling) - name = name or ID units = pv_readback.units - super().__init__(name=name, units=units) + super().__init__(ID, name=name, units=units) self.pvnames = SimpleNamespace( setvalue = pvname_setvalue, @@ -262,9 +260,8 @@ class CoupledDoubleCrystalMonoEnergyWithTimeCorrection(Adjustable): self.electron_energy_rb = PV("SARCL02-MBND100:P-READ") self.electron_energy_sv = PV("SGE-OP2E-ARAMIS:E_ENERGY_SP") - name = name or ID units = pv_readback.units - super().__init__(name=name, units=units) + super().__init__(ID, name=name, units=units) self.pvnames = SimpleNamespace( setvalue = pvname_setvalue,