Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions src/ophyd_async/fastcs/eiger/_eiger_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
DetectorController,
DetectorTrigger,
TriggerInfo,
wait_for_value,
)

from ._eiger_io import EigerDriverIO, EigerTriggerMode
Expand Down Expand Up @@ -55,11 +56,13 @@ async def prepare(self, trigger_info: TriggerInfo):
await asyncio.gather(*coros)

async def arm(self):
self._arm_status = self._drv.detector.arm.trigger(timeout=DEFAULT_TIMEOUT)
# NOTE: This will return immedietly on FastCS 0.8.0,
# but will return after the Eiger has completed arming in 0.9.0.
# https://github.com/DiamondLightSource/FastCS/pull/141
await self._drv.detector.arm.trigger(timeout=DEFAULT_TIMEOUT)

async def wait_for_idle(self):
if self._arm_status:
await self._arm_status
await wait_for_value(self._drv.detector.state, "idle", timeout=DEFAULT_TIMEOUT)

async def disarm(self):
await self._drv.detector.disarm.trigger()
8 changes: 7 additions & 1 deletion tests/fastcs/eiger/test_eiger_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
init_devices,
)
from ophyd_async.fastcs.eiger import EigerController, EigerDriverIO
from ophyd_async.testing import get_mock_put, set_mock_value
from ophyd_async.testing import callback_on_mock_put, get_mock_put, set_mock_value

DriverAndController = tuple[EigerDriverIO, EigerController]

Expand All @@ -18,6 +18,12 @@ def eiger_driver_and_controller_no_arm(RE) -> DriverAndController:
driver = EigerDriverIO("")
controller = EigerController(driver)

def become_idle_after_arm(*args, **kwargs):
# Mocking that eiger has armed and finished taking frames.
set_mock_value(driver.detector.state, "idle")

callback_on_mock_put(driver.detector.arm, become_idle_after_arm)

return driver, controller


Expand Down
Loading