diff --git a/ophyd_devices/__init__.py b/ophyd_devices/__init__.py index cf5b8fc..54723f6 100644 --- a/ophyd_devices/__init__.py +++ b/ophyd_devices/__init__.py @@ -20,6 +20,7 @@ from .sim.sim_signals import ReadOnlySignal from .sim.sim_waveform import SimWaveform SynSignalRO = ReadOnlySignal +from .devices.softpositioner import SoftPositioner from .utils.bec_device_base import BECDeviceBase from .utils.dynamic_pseudo import ComputedSignal from .utils.static_device_test import launch diff --git a/ophyd_devices/configs/ophyd_devices_simulation.yaml b/ophyd_devices/configs/ophyd_devices_simulation.yaml index 90b10b8..43f2e96 100644 --- a/ophyd_devices/configs/ophyd_devices_simulation.yaml +++ b/ophyd_devices/configs/ophyd_devices_simulation.yaml @@ -89,3 +89,12 @@ ring_current_sim: - beamline enabled: true readOnly: false + +soft_pos: + readoutPriority: baseline + deviceClass: ophyd_devices.SoftPositioner + deviceConfig: + deviceTags: + - user motors + enabled: true + readOnly: false \ No newline at end of file diff --git a/ophyd_devices/devices/softpositioner.py b/ophyd_devices/devices/softpositioner.py new file mode 100644 index 0000000..cc483a1 --- /dev/null +++ b/ophyd_devices/devices/softpositioner.py @@ -0,0 +1,16 @@ +from ophyd import SoftPositioner as _SoftPositioner + + +class SoftPositioner(_SoftPositioner): + """ + A patched version of ophyd's SoftPositioner that complies with + ophyd device protocol. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._destroyed = False + + def destroy(self): + self._destroyed = True + super().destroy()