diff --git a/common/src/aaredaqlib/models.py b/common/src/aaredaqlib/models.py index 8e4f2e23..8ab2089e 100644 --- a/common/src/aaredaqlib/models.py +++ b/common/src/aaredaqlib/models.py @@ -167,6 +167,10 @@ class DAQStatusModel(BaseModel): sample: SampleShortInfo | None = None session: SessionStatus +class BeamCenterModel(BaseModel): + x: float | None = 0.0 + y: float | None = 0.0 + class BeamlineSettingsModel(BaseModel): # Float properties cryojet_park_position: float | None = 12.0 diff --git a/daq/src/aaredaq/config.py b/daq/src/aaredaq/config.py index f0925796..08e718e4 100644 --- a/daq/src/aaredaq/config.py +++ b/daq/src/aaredaq/config.py @@ -13,7 +13,7 @@ from aaredaqlib.models import ( def_loop_centering_zoom, SampleShortInfo, SessionStatus, - BeamlineStateEnum, SessionsStateEnum, + BeamlineStateEnum, SessionsStateEnum, BeamCenterModel, ) from aaredaqlib.beamline import MXBeamline @@ -147,6 +147,18 @@ class BeamlineConfig: * np.exp(cfg.camera_translation_factor_a * zoom) ) + @property + def beam_center(self, dtz: float | None = None) -> BeamCenterModel: + tmp = self.__client.get(f"{self.__bl}:beam_center") + if tmp is None: + return BeamCenterModel() + data_dict = json.loads(tmp) + model = BeamCenterModel(**data_dict) + return model + + @beam_center.setter + def beam_center(self, data: BeamCenterModel): + self.__client.set(f"{self.__bl}:beam_center", data.model_dump_json()) def __get_settings(self) -> BeamlineSettingsModel: tmp = self.__client.get(f"{self.__bl}:settings")