diff --git a/src/dodal/devices/electron_analyser/base/base_driver_io.py b/src/dodal/devices/electron_analyser/base/base_driver_io.py index b266709aa8..8bc55e7ddf 100644 --- a/src/dodal/devices/electron_analyser/base/base_driver_io.py +++ b/src/dodal/devices/electron_analyser/base/base_driver_io.py @@ -33,6 +33,8 @@ AnyPsuMode: TypeAlias = SupersetEnum | StrictEnum TPsuMode = TypeVar("TPsuMode", bound=AnyPsuMode) +_PSU = "PSU_MODE" + class AbstractAnalyserDriverIO( ABC, @@ -56,8 +58,7 @@ class AbstractAnalyserDriverIO( pass_energy_type (type[TPassEnergy]): Can be enum or float, depending on electron analyser model. If enum, it determines the available pass energies for this device. - energy_source: Device that can give us the correct excitation energy (in eV) - and switch sources if applicable. + psu_suffix (str, optional): The psu infix to connect to EPICS. Defaults to PSU_MODE. name (str, optional): Name of the device. """ @@ -68,6 +69,7 @@ def __init__( lens_mode_type: type[TLensMode], psu_mode_type: type[TPsuMode], pass_energy_type: type[TPassEnergy], + psu_suffix: str = _PSU, name: str = "", ) -> None: self.acquisition_mode_type = acquisition_mode_type @@ -108,7 +110,7 @@ def __init__( ) # This is used by each electron analyser, however it depends on the electron # analyser type to know if is moved with region settings. - self.psu_mode = epics_signal_rw(psu_mode_type, prefix + "PSU_MODE") + self.psu_mode = epics_signal_rw(psu_mode_type, prefix + psu_suffix) # This is defined in the parent class, add it as readable configuration. self.add_readables([self.acquire_time], StandardReadableFormat.CONFIG_SIGNAL) diff --git a/src/dodal/devices/electron_analyser/specs/specs_driver_io.py b/src/dodal/devices/electron_analyser/specs/specs_driver_io.py index 7c16a39983..6911cf6535 100644 --- a/src/dodal/devices/electron_analyser/specs/specs_driver_io.py +++ b/src/dodal/devices/electron_analyser/specs/specs_driver_io.py @@ -12,6 +12,7 @@ from ophyd_async.epics.core import epics_signal_r, epics_signal_rw from dodal.devices.electron_analyser.base.base_driver_io import ( + _PSU, AbstractAnalyserDriverIO, ) from dodal.devices.electron_analyser.base.base_region import TLensMode, TPsuMode @@ -34,6 +35,7 @@ def __init__( prefix: str, lens_mode_type: type[TLensMode], psu_mode_type: type[TPsuMode], + psu_suffix: str = _PSU, name: str = "", ) -> None: with self.add_children_as_readables(StandardReadableFormat.CONFIG_SIGNAL): @@ -55,6 +57,7 @@ def __init__( lens_mode_type=lens_mode_type, psu_mode_type=psu_mode_type, pass_energy_type=float, + psu_suffix=psu_suffix, name=name, ) diff --git a/src/dodal/devices/electron_analyser/vgscienta/vgscienta_driver_io.py b/src/dodal/devices/electron_analyser/vgscienta/vgscienta_driver_io.py index 3d7db84aa9..4756baec46 100644 --- a/src/dodal/devices/electron_analyser/vgscienta/vgscienta_driver_io.py +++ b/src/dodal/devices/electron_analyser/vgscienta/vgscienta_driver_io.py @@ -40,6 +40,7 @@ def __init__( lens_mode_type: type[TLensMode], psu_mode_type: type[TPsuMode], pass_energy_type: type[TPassEnergyEnum], + psu_suffix: str = "ELEMENT_SET", name: str = "", ) -> None: with self.add_children_as_readables(StandardReadableFormat.CONFIG_SIGNAL): @@ -55,12 +56,13 @@ def __init__( self.sensor_max_size_y = epics_signal_r(int, prefix + "MaxSizeY_RBV") super().__init__( - prefix, - AcquisitionMode, - lens_mode_type, - psu_mode_type, - pass_energy_type, - name, + prefix=prefix, + acquisition_mode_type=AcquisitionMode, + lens_mode_type=lens_mode_type, + psu_mode_type=psu_mode_type, + pass_energy_type=pass_energy_type, + psu_suffix=psu_suffix, + name=name, ) @AsyncStatus.wrap