From e2d5eb794253b73b05a53c06221b156ef3f4b50a Mon Sep 17 00:00:00 2001 From: Oli Wenman Date: Wed, 11 Mar 2026 14:57:08 +0000 Subject: [PATCH 1/2] Add i09 intensity protection device --- src/dodal/beamlines/i09.py | 17 +++++++++++++++-- src/dodal/devices/beamlines/i09/__init__.py | 10 ++++++++-- src/dodal/devices/beamlines/i09/enums.py | 5 +++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/dodal/beamlines/i09.py b/src/dodal/beamlines/i09.py index aad9259dbdc..d08e28db7de 100644 --- a/src/dodal/beamlines/i09.py +++ b/src/dodal/beamlines/i09.py @@ -1,10 +1,16 @@ -from ophyd_async.core import InOut +from ophyd_async.core import InOut, SignalRW +from ophyd_async.epics.core import epics_signal_rw from dodal.beamlines.i09_1_shared import devices as i09_1_shared_devices from dodal.beamlines.i09_2_shared import devices as i09_2_shared_devices from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline from dodal.device_manager import DeviceManager -from dodal.devices.beamlines.i09 import LensMode, PassEnergy, PsuMode +from dodal.devices.beamlines.i09 import ( + IntensityProtection, + LensMode, + PassEnergy, + PsuMode, +) from dodal.devices.common_dcm import DoubleCrystalMonochromatorWithDSpacing from dodal.devices.electron_analyser.base import DualEnergySource from dodal.devices.electron_analyser.vgscienta import VGScientaDetector @@ -126,3 +132,10 @@ def lakeshore() -> Lakeshore336: def smpm() -> XYZAzimuthPolarStage: """Sample Manipulator.""" return XYZAzimuthPolarStage(prefix=f"{I_PREFIX.beamline_prefix}-MO-SMPM-01:") + + +@devices.factory +def intensity_protection() -> SignalRW[IntensityProtection]: + return epics_signal_rw( + IntensityProtection, f"{I_PREFIX.beamline_prefix}-DI-EAN-01:PROT:ILK" + ) diff --git a/src/dodal/devices/beamlines/i09/__init__.py b/src/dodal/devices/beamlines/i09/__init__.py index cfb2a43d07d..d92079e2230 100644 --- a/src/dodal/devices/beamlines/i09/__init__.py +++ b/src/dodal/devices/beamlines/i09/__init__.py @@ -1,3 +1,9 @@ -from dodal.devices.beamlines.i09.enums import Grating, LensMode, PassEnergy, PsuMode +from dodal.devices.beamlines.i09.enums import ( + Grating, + IntensityProtection, + LensMode, + PassEnergy, + PsuMode, +) -__all__ = ["Grating", "LensMode", "PsuMode", "PassEnergy"] +__all__ = ["Grating", "IntensityProtection", "LensMode", "PsuMode", "PassEnergy"] diff --git a/src/dodal/devices/beamlines/i09/enums.py b/src/dodal/devices/beamlines/i09/enums.py index 6b0a368b10c..ce233485e30 100644 --- a/src/dodal/devices/beamlines/i09/enums.py +++ b/src/dodal/devices/beamlines/i09/enums.py @@ -29,3 +29,8 @@ class PassEnergy(StrictEnum): E100 = "100" E200 = "200" E500 = "500" + + +class IntensityProtection(StrictEnum): + CLEAR = "Clear" + TRIPPED = "Tripped" From 25817771885cdeaac628f64d9d4912d11e269597 Mon Sep 17 00:00:00 2001 From: Oli Wenman Date: Wed, 11 Mar 2026 15:06:34 +0000 Subject: [PATCH 2/2] Correct import --- src/dodal/devices/beamlines/i09/__init__.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/dodal/devices/beamlines/i09/__init__.py b/src/dodal/devices/beamlines/i09/__init__.py index d92079e2230..7a06947c2e3 100644 --- a/src/dodal/devices/beamlines/i09/__init__.py +++ b/src/dodal/devices/beamlines/i09/__init__.py @@ -1,9 +1,3 @@ -from dodal.devices.beamlines.i09.enums import ( - Grating, - IntensityProtection, - LensMode, - PassEnergy, - PsuMode, -) +from .enums import Grating, IntensityProtection, LensMode, PassEnergy, PsuMode __all__ = ["Grating", "IntensityProtection", "LensMode", "PsuMode", "PassEnergy"]