From 588419c05743c9fa577ed375f9ec8c92094b6911 Mon Sep 17 00:00:00 2001 From: David Perl Date: Thu, 27 Aug 2026 10:59:07 +0200 Subject: [PATCH] fix: current state reading --- src/aare/daq/operations/rotation/service.py | 1 + src/aare/devices/bec_worker.py | 30 ++++++++++++--------- src/aare/gui/panels/smart_rotation_panel.py | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/aare/daq/operations/rotation/service.py b/src/aare/daq/operations/rotation/service.py index 1246c6dd..74a41708 100644 --- a/src/aare/daq/operations/rotation/service.py +++ b/src/aare/daq/operations/rotation/service.py @@ -68,6 +68,7 @@ class RotationService: ) time.sleep(smargon_time_step) + self.ctx.deps.devs.aerotech.wait_till_done(timeout=int(round(total_time + 60, 0))) self.ctx.deps.devs.aerotech_omega = omega_start diff --git a/src/aare/devices/bec_worker.py b/src/aare/devices/bec_worker.py index 2668b03f..d2024e85 100644 --- a/src/aare/devices/bec_worker.py +++ b/src/aare/devices/bec_worker.py @@ -50,21 +50,22 @@ class BeamlineState(str, Enum): XTAL_SNAPSHOT = "xtal_snapshot" -def _bec_state_to_aare_state(bec_state: BeamlineState) -> BeamlineStateEnum: +def _bec_state_to_aare_state(bec_state: str) -> BeamlineStateEnum: map = { - BeamlineState.BEAMSTOP_ALIGNMENT: BeamlineStateEnum.BeamstopAlignment, - BeamlineState.SAMPLE_ALIGNMENT: BeamlineStateEnum.SampleAlignment, - BeamlineState.DATA_COLLECTION: BeamlineStateEnum.DataCollection, - BeamlineState.DC_XRF: BeamlineStateEnum.XrayFluorescence, - BeamlineState.MANUAL_SAMPLE_EXCHANGE: BeamlineStateEnum.SampleExchange, - BeamlineState.BEAM_VISUALISATION: BeamlineStateEnum.BeamLocation, - BeamlineState.FLUX_MEASUREMENT: BeamlineStateEnum.FluxMeasurement, - BeamlineState.BEAMSTOP_ALIGNMENT: BeamlineStateEnum.BeamstopAlignment, - BeamlineState.MAINTENANCE: BeamlineStateEnum.Maintenance, - BeamlineState.XTAL_SNAPSHOT: BeamlineStateEnum.XtalSnapshot, + "BEAMSTOP_ALIGNMENT": BeamlineStateEnum.BeamstopAlignment, + "SAMPLE_ALIGNMENT": BeamlineStateEnum.SampleAlignment, + "DATA_COLLECTION": BeamlineStateEnum.DataCollection, + "DC_XRF": BeamlineStateEnum.XrayFluorescence, + "MANUAL_SAMPLE_EXCHANGE": BeamlineStateEnum.SampleExchange, + "BEAM_VISUALISATION": BeamlineStateEnum.BeamLocation, + "FLUX_MEASUREMENT": BeamlineStateEnum.FluxMeasurement, + "BEAMSTOP_ALIGNMENT": BeamlineStateEnum.BeamstopAlignment, + "MAINTENANCE": BeamlineStateEnum.Maintenance, + "XTAL_SNAPSHOT": BeamlineStateEnum.XtalSnapshot, } if bec_state in map: return map[bec_state] + logger.warning(f"No match for state: {bec_state}") return BeamlineStateEnum.Maintenance @@ -138,9 +139,12 @@ class BECClientWorker: if self.planner is None: return BeamlineStateEnum.Maintenance matching_states = self.planner.current_state() - if matching_states is None or len(matching_states) > 1: + if matching_states is None or len(matching_states) < 1: return BeamlineStateEnum.Maintenance - return _bec_state_to_aare_state(matching_states[0]) + logger.debug(f"BEC planner returned matching states: {matching_states}") + current_state = _bec_state_to_aare_state(matching_states[0][0]) + logger.info(f"Current state detected from BEC: {current_state}") + return current_state def _bec_error( self, exc: Exception, *, operation: str, tags: list[str] | None = None diff --git a/src/aare/gui/panels/smart_rotation_panel.py b/src/aare/gui/panels/smart_rotation_panel.py index 51bf8320..28e5f1b0 100644 --- a/src/aare/gui/panels/smart_rotation_panel.py +++ b/src/aare/gui/panels/smart_rotation_panel.py @@ -232,7 +232,7 @@ class SimpleRotationSettingsPanel(QWidget): self._d = s # TODO only update best_res after raster finished otherwise ask to update. or have toggle to overwrite with user value # TODO only take best res from flat face scan - # TODO identify flat face!!!! + # TODO identify flat face! best_res = s.last_best_res self._omega = s.geom.omega_deg