From ed9d8136b878950a7b4683fb2cd3e383ed2b6f49 Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Fri, 30 May 2025 14:01:05 +0200 Subject: [PATCH] feat(sim): add preview signal to camera simulation --- ophyd_devices/sim/sim_camera.py | 3 +++ ophyd_devices/utils/bec_signals.py | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ophyd_devices/sim/sim_camera.py b/ophyd_devices/sim/sim_camera.py index 56c6a17..2aabb5c 100644 --- a/ophyd_devices/sim/sim_camera.py +++ b/ophyd_devices/sim/sim_camera.py @@ -9,6 +9,7 @@ from ophyd_devices.interfaces.base_classes.psi_device_base import PSIDeviceBase from ophyd_devices.sim.sim_data import SimulatedDataCamera from ophyd_devices.sim.sim_signals import ReadOnlySignal, SetableSignal from ophyd_devices.sim.sim_utils import H5Writer +from ophyd_devices.utils.bec_signals import PreviewSignal logger = bec_logger.logger @@ -38,6 +39,7 @@ class SimCameraControl(Device): compute_readback=True, kind=Kind.omitted, ) + preview = Cpt(PreviewSignal, name="preview", ndim=2) write_to_disk = Cpt(SetableSignal, name="write_to_disk", value=False, kind=Kind.config) def __init__(self, name, *, parent=None, sim_init: dict = None, device_manager=None, **kwargs): @@ -92,6 +94,7 @@ class SimCamera(PSIDeviceBase, SimCameraControl): for _ in range(self.burst.get()): data = self.image.get() # pylint: disable=protected-access + self.preview.put(data) self._run_subs(sub_type=self.SUB_MONITOR, value=data) if self.write_to_disk.get(): self.h5_writer.receive_data(data) diff --git a/ophyd_devices/utils/bec_signals.py b/ophyd_devices/utils/bec_signals.py index cacf002..21fa95f 100644 --- a/ophyd_devices/utils/bec_signals.py +++ b/ophyd_devices/utils/bec_signals.py @@ -347,10 +347,10 @@ class PreviewSignal(BECMessageSignal): **kwargs, ) -> None: """ - Put method for Preview1DSignal. + Put method for PreviewSignal. - If value is a DeviceMonitor1DMessage, it will be directly set, - if value is a dict, it will be converted to a DeviceMonitor1DMessage. + If value is a DevicePreviewMessage, it will be directly set, + if value is a dict, it will be converted to a DevicePreviewMessage. Args: value (list | np.ndarray | dict | self._bec_message_type): The preview data. Must be 1D. @@ -378,10 +378,10 @@ class PreviewSignal(BECMessageSignal): self, value: list | np.ndarray | dict, *, metadata: dict | None = None, **kwargs ) -> DeviceStatus: """ - Put method for Preview1DSignal. + Put method for PreviewSignal. - If value is a DeviceMonitor1DMessage, it will be directly set, - if value is a dict, it will be converted to a DeviceMonitor1DMessage. + If value is a DevicePreviewMessage, it will be directly set, + if value is a dict, it will be converted to a DevicePreviewMessage. Args: value (list | np.ndarray | dict | self._bec_message_type) : The preview data. Must be 1D.