From a8a2637d07026b1ce3d1bc4e3f0da67bb5993d17 Mon Sep 17 00:00:00 2001 From: Klaus Wakonig Date: Sun, 18 Sep 2022 13:55:35 +0200 Subject: [PATCH 1/2] added SynSignalRO --- ophyd_devices/__init__.py | 2 +- ophyd_devices/sim/__init__.py | 2 +- ophyd_devices/sim/sim.py | 27 ++++++++++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/ophyd_devices/__init__.py b/ophyd_devices/__init__.py index c6527a8..b88c1f3 100644 --- a/ophyd_devices/__init__.py +++ b/ophyd_devices/__init__.py @@ -1,6 +1,6 @@ from .galil.galil_ophyd import GalilMotor from .npoint.npoint import NPointAxis from .rt_lamni import RtLamniMotor -from .sim.sim import SynAxisMonitor, SynAxisOPAAS, SynFlyer, SynSLSDetector +from .sim.sim import SynAxisMonitor, SynAxisOPAAS, SynFlyer, SynSignalRO, SynSLSDetector from .sls_devices.sls_devices import SLSOperatorMessages from .smaract.smaract_ophyd import SmaractMotor diff --git a/ophyd_devices/sim/__init__.py b/ophyd_devices/sim/__init__.py index 2fdb490..464d315 100644 --- a/ophyd_devices/sim/__init__.py +++ b/ophyd_devices/sim/__init__.py @@ -1 +1 @@ -from .sim import SynAxisMonitor, SynAxisOPAAS, SynFlyer, SynSLSDetector +from .sim import SynAxisMonitor, SynAxisOPAAS, SynFlyer, SynSignalRO, SynSLSDetector diff --git a/ophyd_devices/sim/sim.py b/ophyd_devices/sim/sim.py index eb1156a..57ec57f 100644 --- a/ophyd_devices/sim/sim.py +++ b/ophyd_devices/sim/sim.py @@ -2,7 +2,6 @@ import os import threading import time as ttime import warnings -from email.message import Message from typing import List import numpy as np @@ -19,6 +18,22 @@ class DeviceStop(Exception): pass +class SynSignalRO(Signal): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._metadata.update( + write_access=False, + ) + + def wait_for_connection(self, timeout=0): + super().wait_for_connection(timeout) + self._metadata.update(connected=True) + + def get(self, **kwargs): + self._readback = np.random.rand() + return self._readback + + class _ReadbackSignal(Signal): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -284,6 +299,12 @@ class DummyController: some_var = 10 another_var = 20 + def on(self): + self._connected = True + + def off(self): + self._connected = False + def controller_show_all(self): """dummy controller show all @@ -297,6 +318,10 @@ class DummyController: print(self.some_var) +class DummyControllerDevice(Device): + USER_ACCESS = ["controller"] + + class SynFlyer(Device, PositionerBase): def __init__( self, From d71e82127e2e450490d1f4b0e01ee0b3c0e7f002 Mon Sep 17 00:00:00 2001 From: e20216 Date: Fri, 14 Oct 2022 18:08:14 +0200 Subject: [PATCH 2/2] added enabled-set --- ophyd_devices/rt_lamni/rt_lamni_ophyd.py | 53 ++++++++++++++---------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/ophyd_devices/rt_lamni/rt_lamni_ophyd.py b/ophyd_devices/rt_lamni/rt_lamni_ophyd.py index 53cbf92..e878401 100644 --- a/ophyd_devices/rt_lamni/rt_lamni_ophyd.py +++ b/ophyd_devices/rt_lamni/rt_lamni_ophyd.py @@ -160,11 +160,11 @@ class RtLamniController(Controller): def feedback_disable(self): self.socket_put("J0") logger.info("LamNI Feedback disabled.") - self.get_device_manager().devices.lsamx.enabled = True - self.get_device_manager().devices.lsamy.enabled = True - self.get_device_manager().devices.loptx.enabled = True - self.get_device_manager().devices.lopty.enabled = True - self.get_device_manager().devices.loptz.enabled = True + self.set_device_enabled("lsamx", True) + self.set_device_enabled("lsamy", True) + self.set_device_enabled("loptx", True) + self.set_device_enabled("lopty", True) + self.set_device_enabled("loptz", True) @threadlocked def _set_axis_velocity(self, um_per_s): @@ -205,25 +205,25 @@ class RtLamniController(Controller): # set these as closed loop target position self.socket_put(f"pa0,{x_curr:.4f}") self.socket_put(f"pa1,{y_curr:.4f}") - self.get_device_manager().devices.rtx.setpoint.set_with_feedback_disabled(x_curr) - self.get_device_manager().devices.rty.setpoint.set_with_feedback_disabled(y_curr) + self.get_device_manager().devices.rtx.obj.user_setpoint.set_with_feedback_disabled(x_curr) + self.get_device_manager().devices.rty.obj.user_setpoint.set_with_feedback_disabled(y_curr) self.socket_put("J5") logger.info("LamNI Feedback enabled (without reset).") - self.get_device_manager().devices.lsamx.enabled = False - self.get_device_manager().devices.lsamy.enabled = False - self.get_device_manager().devices.loptx.enabled = False - self.get_device_manager().devices.lopty.enabled = False - self.get_device_manager().devices.loptz.enabled = False + self.set_device_enabled("lsamx", False) + self.set_device_enabled("lsamy", False) + self.set_device_enabled("loptx", False) + self.set_device_enabled("lopty", False) + self.set_device_enabled("loptz", False) @threadlocked def feedback_disable_and_even_reset_lamni_angle_interferometer(self): self.socket_put("J6") logger.info("LamNI Feedback disabled including the angular interferometer.") - self.get_device_manager().devices.lsamx.enabled = True - self.get_device_manager().devices.lsamy.enabled = True - self.get_device_manager().devices.loptx.enabled = True - self.get_device_manager().devices.lopty.enabled = True - self.get_device_manager().devices.loptz.enabled = True + self.set_device_enabled("lsamx", True) + self.set_device_enabled("lsamy", True) + self.set_device_enabled("loptx", True) + self.set_device_enabled("lopty", True) + self.set_device_enabled("loptz", True) def get_device_manager(self): for axis in self._axis: @@ -466,11 +466,11 @@ class RtLamniController(Controller): (self.socket_put_and_receive("J2")).split(",")[0] ) - self.get_device_manager().devices.lsamx.enabled = False - self.get_device_manager().devices.lsamy.enabled = False - self.get_device_manager().devices.loptx.enabled = False - self.get_device_manager().devices.lopty.enabled = False - self.get_device_manager().devices.loptz.enabled = False + self.set_device_enabled("lsamx", False) + self.set_device_enabled("lsamy", False) + self.set_device_enabled("loptx", False) + self.set_device_enabled("lopty", False) + self.set_device_enabled("loptz", False) if interferometer_feedback_not_running == 1: logger.error( @@ -484,6 +484,15 @@ class RtLamniController(Controller): # ptychography_alignment_done = 0 + def set_device_enabled(self, device_name: str, enabled: bool) -> None: + """enable / disable a device""" + if device_name not in self.get_device_manager().devices: + logger.warning( + f"Device {device_name} is not configured and cannot be enabled/disabled." + ) + return + self.get_device_manager().devices[device_name].enabled_set = enabled + class RtLamniSignalBase(SocketSignal): def __init__(self, signal_name, **kwargs):