Skip to content

Commit

Permalink
Updated camera support to use single image mode for scanning.
Browse files Browse the repository at this point in the history
  • Loading branch information
yannachen committed Jul 8, 2024
1 parent d5bb151 commit 0191956
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
36 changes: 25 additions & 11 deletions src/haven/instrument/area_detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,23 @@
__all__ = ["Eiger500K", "Lambda250K", "SimDetector", "AsyncCamMixin"]


class WriteModes(IntEnum):
SINGLE = 0
CAPTURE = 1
STREAM = 2


class Capture(IntEnum):
STOP = 0
START = 1


class ImageMode(IntEnum):
SINGLE = 0
MULTIPLE = 1
CONTINUOUS = 2


class AsyncCamMixin(OphydObject):
"""A mixin that allows for delayed evaluation of the connection status.
Expand All @@ -55,6 +72,14 @@ class AsyncCamMixin(OphydObject):
acquire = ADCpt(SignalWithRBV, "Acquire")


class SingleImageModeTrigger(SingleTrigger_V34):
"""A trigger mixin for cameras that don't support "Multiple" image mode."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if "cam.image_mode" in self.stage_sigs:
self.stage_sigs['cam.image_mode'] = ImageMode.SINGLE


class SimDetectorCam_V34(CamMixin_V34, SimDetectorCam): ...


Expand All @@ -64,17 +89,6 @@ class EigerCam(AsyncCamMixin, EigerDetectorCam): ...
class LambdaCam(AsyncCamMixin, Lambda750kCam): ...


class WriteModes(IntEnum):
SINGLE = 0
CAPTURE = 1
STREAM = 2


class Capture(IntEnum):
STOP = 0
START = 1


class StageCapture:
"""Mixin to prepare NDPlugin file capture mode.
Expand Down
3 changes: 2 additions & 1 deletion src/haven/instrument/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
DetectorBase,
SimDetector,
StatsPlugin_V34,
SingleImageModeTrigger,
)
from .device import make_device

Expand All @@ -31,7 +32,7 @@ class AravisCam(AsyncCamMixin, CamBase):
acquire_time_auto = ADCpt(EpicsSignal, "ExposureAuto")


class AravisDetector(SingleTrigger, DetectorBase):
class AravisDetector(SingleImageModeTrigger, DetectorBase):
"""
A gige-vision camera described by EPICS.
"""
Expand Down

0 comments on commit 0191956

Please sign in to comment.