Source code for ophyd_async.epics.eiger._eiger_io

from enum import Enum

from ophyd_async.core import Device
from ophyd_async.epics.signal import epics_signal_r, epics_signal_rw_rbv, epics_signal_w


class EigerTriggerMode(str, Enum):
    internal = "ints"
    edge = "exts"
    gate = "exte"


[docs] class EigerDriverIO(Device): def __init__(self, prefix: str, name: str = "") -> None: self.bit_depth = epics_signal_r(int, f"{prefix}BitDepthReadout") self.stale_parameters = epics_signal_r(bool, f"{prefix}StaleParameters") self.state = epics_signal_r(str, f"{prefix}DetectorState") self.roi_mode = epics_signal_rw_rbv(str, f"{prefix}RoiMode") self.acquire_time = epics_signal_rw_rbv(float, f"{prefix}CountTime") self.acquire_period = epics_signal_rw_rbv(float, f"{prefix}FrameTime") self.num_images = epics_signal_rw_rbv(int, f"{prefix}Nimages") self.num_triggers = epics_signal_rw_rbv(int, f"{prefix}Ntrigger") # TODO: Should be EigerTriggerMode enum, see https://github.com/DiamondLightSource/eiger-fastcs/issues/43 self.trigger_mode = epics_signal_rw_rbv(str, f"{prefix}TriggerMode") self.arm = epics_signal_w(int, f"{prefix}Arm") self.disarm = epics_signal_w(int, f"{prefix}Disarm") self.abort = epics_signal_w(int, f"{prefix}Abort") self.beam_centre_x = epics_signal_rw_rbv(float, f"{prefix}BeamCenterX") self.beam_centre_y = epics_signal_rw_rbv(float, f"{prefix}BeamCenterY") self.det_distance = epics_signal_rw_rbv(float, f"{prefix}DetectorDistance") self.omega_start = epics_signal_rw_rbv(float, f"{prefix}OmegaStart") self.omega_increment = epics_signal_rw_rbv(float, f"{prefix}OmegaIncrement") self.photon_energy = epics_signal_rw_rbv(float, f"{prefix}PhotonEnergy") super().__init__(name)