Source code for ophyd_async.epics.advimba._vimba_io

from ophyd_async.core import StrictEnum
from ophyd_async.epics import adcore
from ophyd_async.epics.core import epics_signal_rw_rbv


class VimbaPixelFormat(StrictEnum):
    INTERNAL = "Mono8"
    EXT_ENABLE = "Mono12"
    EXT_TRIGGER = "Ext. Trigger"
    MULT_TRIGGER = "Mult. Trigger"
    ALIGNMENT = "Alignment"


class VimbaConvertFormat(StrictEnum):
    NONE = "None"
    MONO8 = "Mono8"
    MONO16 = "Mono16"
    RGB8 = "RGB8"
    RGB16 = "RGB16"


class VimbaTriggerSource(StrictEnum):
    FREERUN = "Freerun"
    LINE1 = "Line1"
    LINE2 = "Line2"
    FIXED_RATE = "FixedRate"
    SOFTWARE = "Software"
    ACTION0 = "Action0"
    ACTION1 = "Action1"


class VimbaOverlap(StrictEnum):
    OFF = "Off"
    PREV_FRAME = "PreviousFrame"


class VimbaOnOff(StrictEnum):
    ON = "On"
    OFF = "Off"


class VimbaExposeOutMode(StrictEnum):
    TIMED = "Timed"  # Use ExposureTime PV
    TRIGGER_WIDTH = "TriggerWidth"  # Expose for length of high signal


[docs] class VimbaDriverIO(adcore.ADBaseIO): """This mirrors the interface provided by ADVimba/db/vimba.template.""" def __init__(self, prefix: str, name: str = "") -> None: # self.pixel_format = epics_signal_rw_rbv(PixelFormat, prefix + "PixelFormat") self.convert_pixel_format = epics_signal_rw_rbv( VimbaConvertFormat, prefix + "ConvertPixelFormat" ) # Pixel format of data outputted to AD self.trigger_source = epics_signal_rw_rbv( VimbaTriggerSource, prefix + "TriggerSource" ) self.trigger_mode = epics_signal_rw_rbv(VimbaOnOff, prefix + "TriggerMode") self.trigger_overlap = epics_signal_rw_rbv( VimbaOverlap, prefix + "TriggerOverlap" ) self.exposure_mode = epics_signal_rw_rbv( VimbaExposeOutMode, prefix + "ExposureMode" ) super().__init__(prefix, name)