Source code for ophyd_async.epics.adcore._single_trigger

import asyncio
from collections.abc import Sequence

from bluesky.protocols import Triggerable

from ophyd_async.core import AsyncStatus, SignalR, StandardReadable
from ophyd_async.core import StandardReadableFormat as Format

from ._core_io import ADBaseIO, NDPluginBaseIO
from ._utils import ADImageMode


[docs] class SingleTriggerDetector(StandardReadable, Triggerable): def __init__( self, drv: ADBaseIO, read_uncached: Sequence[SignalR] = (), name="", plugins: dict[str, NDPluginBaseIO] | None = None, ) -> None: self.drv = drv if plugins is not None: for k, v in plugins.items(): setattr(self, k, v) self.add_readables( [self.drv.array_counter, *read_uncached], Format.HINTED_UNCACHED_SIGNAL, ) self.add_readables([self.drv.acquire_time], Format.CONFIG_SIGNAL) super().__init__(name=name)
[docs] @AsyncStatus.wrap async def stage(self) -> None: await asyncio.gather( self.drv.image_mode.set(ADImageMode.SINGLE), self.drv.wait_for_plugins.set(True), ) await super().stage()
[docs] @AsyncStatus.wrap async def trigger(self) -> None: await self.drv.acquire.set(True)