From ce8616a9798f191659e8dd1afa52d9038e4cff84 Mon Sep 17 00:00:00 2001 From: Christian Appel Date: Fri, 20 Oct 2023 16:58:44 +0200 Subject: [PATCH] refactor: reworked arm to --- ophyd_devices/epics/devices/eiger9m_csaxs.py | 32 +++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/ophyd_devices/epics/devices/eiger9m_csaxs.py b/ophyd_devices/epics/devices/eiger9m_csaxs.py index 620d811..1cdb4a9 100644 --- a/ophyd_devices/epics/devices/eiger9m_csaxs.py +++ b/ophyd_devices/epics/devices/eiger9m_csaxs.py @@ -250,6 +250,7 @@ class Eiger9mCsaxs(DetectorBase): time.sleep(0.05) return super().stage() + #TODO function for abstract class? def _prep_file_writer(self) -> None: """Prepare file writer for scan @@ -283,11 +284,13 @@ class Eiger9mCsaxs(DetectorBase): break time.sleep(0.005) + #TODO function for abstract class? def _close_file_writer(self) -> None: """Close file writer""" self.std_client.stop_writer() #TODO can I wait for a status message here maybe? To ensure writer returned + #TODO function for abstract class? def _prep_det(self) -> None: """Prepare detector for scan. Includes checking the detector threshold, setting the acquisition parameters and setting the trigger source @@ -334,6 +337,20 @@ class Eiger9mCsaxs(DetectorBase): MessageEndpoints.file_event(self.name), msg.dumps(), ) + + def arm_acquisition(self) -> None: + """Arm detector for acquisition + """ + self.cam.acquire.put(1) + logger.info("Waiting for Eiger9m to be armed") + while True: + det_ctrl = self.cam.detector_state.read()[self.cam.detector_state.name]["value"] + if det_ctrl == int(DetectorState.RUNNING): + break + if self._stopped == True: + break + time.sleep(0.005) + logger.info("Eiger9m is armed") #TODO needed? if yes why only for the eiger9m? @threadlocked @@ -389,21 +406,6 @@ class Eiger9mCsaxs(DetectorBase): ) self._close_file_writer() - def arm_acquisition(self) -> None: - """Start acquisition in software trigger mode, - or arm the detector in hardware of the detector - """ - self.cam.acquire.put(1) - logger.info("Waiting for Eiger9m to be armed") - while True: - det_ctrl = self.cam.detector_state.read()[self.cam.detector_state.name]["value"] - if det_ctrl == int(DetectorState.RUNNING): - break - if self._stopped == True: - break - time.sleep(0.005) - logger.info("Eiger9m is armed") - def stop_acquisition(self) -> None: """Stop the detector and wait for the proper status message""" logger.info("Waiting for Eiger9m to be armed")