Skip to content

Commit 95f4775

Browse files
Also copy over single trigger v33 from nslsii package
1 parent 0bb8647 commit 95f4775

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

src/dodal/devices/areadetector/adaravis.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
from nslsii.ad33 import SingleTriggerV33
21
from ophyd import Component as Cpt
32
from ophyd import DetectorBase
43
from ophyd.areadetector.base import ADComponent as Cpt
54
from ophyd.areadetector.detectors import DetectorBase
65

7-
from .adutils import Hdf5Writer, SynchronisedAdDriverBase
6+
from .adutils import Hdf5Writer, SingleTriggerV33, SynchronisedAdDriverBase
87

98
_ACQUIRE_BUFFER_PERIOD = 0.2
109

src/dodal/devices/areadetector/adsim.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
from nslsii.ad33 import SingleTriggerV33
21
from ophyd import Component as Cpt
32
from ophyd.areadetector.base import ADComponent as Cpt
43
from ophyd.areadetector.detectors import DetectorBase
54

6-
from .adutils import Hdf5Writer, SynchronisedAdDriverBase
5+
from .adutils import Hdf5Writer, SingleTriggerV33, SynchronisedAdDriverBase
76

87

98
class AdSimDetector(SingleTriggerV33, DetectorBase):

src/dodal/devices/areadetector/adutils.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,41 @@
1+
import time as ttime
2+
13
from ophyd import Component as Cpt
2-
from ophyd import EpicsSignal, EpicsSignalRO
4+
from ophyd import EpicsSignal, EpicsSignalRO, Staged
5+
from ophyd.areadetector import ADTriggerStatus, TriggerBase
36
from ophyd.areadetector.cam import AreaDetectorCam
47
from ophyd.areadetector.filestore_mixins import FileStoreHDF5, FileStoreIterativeWrite
58
from ophyd.areadetector.plugins import HDF5Plugin
69

710

11+
class SingleTriggerV33(TriggerBase):
12+
_status_type = ADTriggerStatus
13+
14+
def __init__(self, *args, image_name=None, **kwargs):
15+
super().__init__(*args, **kwargs)
16+
if image_name is None:
17+
image_name = "_".join([self.name, "image"])
18+
self._image_name = image_name
19+
20+
def trigger(self):
21+
"Trigger one acquisition."
22+
if self._staged != Staged.yes:
23+
raise RuntimeError(
24+
"This detector is not ready to trigger."
25+
"Call the stage() method before triggering."
26+
)
27+
28+
self._status = self._status_type(self)
29+
30+
def _acq_done(*args, **kwargs):
31+
# TODO sort out if anything useful in here
32+
self._status._finished()
33+
34+
self._acquisition_signal.put(1, use_complete=True, callback=_acq_done)
35+
self.dispatch(self._image_name, ttime.time())
36+
return self._status
37+
38+
839
class SynchronisedAdDriverBase(AreaDetectorCam):
940
"""
1041
Base Ophyd device to control an AreaDetector driver and

0 commit comments

Comments
 (0)