Skip to content

Commit

Permalink
Fix merge issues and update for review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
dperl-dls committed May 16, 2024
1 parent 3be4f14 commit a61afc0
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/ophyd_async/core/async_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def __init__(self, awaitable: Awaitable, timeout: SupportsFloat | None = None):
asyncio.wait_for(awaitable, timeout=timeout)
)
self.task.add_done_callback(self._run_callbacks)
self._callbacks = cast(list[Callback[Status]], [])
self._callbacks: list[Callback[Status]] = []

def __await__(self):
return self.task.__await__()
Expand Down
26 changes: 11 additions & 15 deletions src/ophyd_async/core/detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,41 +292,37 @@ async def _prepare(self, value: T) -> None:
f"Detector {self.controller} needs at least {required}s deadtime, "
f"but trigger logic provides only {self._trigger_info.deadtime}s"
)

self._arm_status = await self.controller.arm(
num=self._trigger_info.num,
trigger=self._trigger_info.trigger,
exposure=self._trigger_info.livetime,
)

def kickoff(self, timeout: Optional[float] = None):
self._fly_start = time.monotonic()
self._fly_status = WatchableAsyncStatus(
self._observe_writer_indicies(self._last_frame), timeout
)
return self._fly_status

async def _observe_writer_indicies(self, end_observation: int):
@AsyncStatus.wrap
async def kickoff(self):
if not self._arm_status:
raise Exception("Detector not armed!")

@WatchableAsyncStatus.wrap
async def complete(self):
assert self._arm_status, "Prepare not run"
assert self._trigger_info
async for index in self.writer.observe_indices_written(
self._frame_writing_timeout
):
yield WatcherUpdate(
name=self.name,
current=index,
initial=self._initial_frame,
target=end_observation,
target=self._trigger_info.num,
unit="",
precision=0,
time_elapsed=time.monotonic() - self._fly_start,
)
if index >= end_observation:
if index >= self._trigger_info.num:
break

@AsyncStatus.wrap
async def complete(self) -> AsyncStatus:
assert self._fly_status, "Kickoff not run"
return await self._fly_status

async def describe_collect(self) -> Dict[str, DataKey]:
return self._describe

Expand Down

0 comments on commit a61afc0

Please sign in to comment.