diff --git a/daq/src/aaredaq/daq.py b/daq/src/aaredaq/daq.py index 7e53518f..f3667a45 100644 --- a/daq/src/aaredaq/daq.py +++ b/daq/src/aaredaq/daq.py @@ -198,9 +198,7 @@ class AareDAQ: def omega(self) -> float: return self.__devs.aerotech.omega - @omega.setter - def omega(self, val: float): - self.__cfg.set_busy(BeamlineStateEnum.SampleAlignment) + def __omega(self, val: float): self.__saved_box = None if -2000 < val < 2000: try: @@ -215,6 +213,16 @@ class AareDAQ: logger.error("Omega has to be between -2000 and 2000 degrees") raise ValueError("Omega has to be between -2000 and 2000 degrees (for now)") + @omega.setter + def omega(self, val: float): + self.__cfg.set_busy(BeamlineStateEnum.SampleAlignment) + self.__omega(val) + + def omega_rel(self, val: float): + self.__cfg.set_busy(BeamlineStateEnum.SampleAlignment) + curr_omega = self.__devs.aerotech.omega + self.__omega(curr_omega + val) + @property def zoom(self) -> float: return self.__devs.zoom diff --git a/daq/src/aaredaq/server.py b/daq/src/aaredaq/server.py index 60c3729e..283317d4 100644 --- a/daq/src/aaredaq/server.py +++ b/daq/src/aaredaq/server.py @@ -96,6 +96,12 @@ async def omega(val: float, token: str = Depends(oauth2_scheme)): daq.omega = val return "OK" +@app.put("/beamline/omega_rel") +async def omega(val: float, token: str = Depends(oauth2_scheme)): + logger.debug(f"Moving omega by {val}") + auth.check_jwt_rw(cfg, auth.parse_token(token)) + daq.omega_rel(val) + return "OK" @app.put("/beamline/light") async def light(val: float, token: str = Depends(oauth2_scheme)): diff --git a/gui/src/aaregui/main_window.py b/gui/src/aaregui/main_window.py index e4d5bd32..4edf83ee 100644 --- a/gui/src/aaregui/main_window.py +++ b/gui/src/aaregui/main_window.py @@ -229,6 +229,7 @@ class MainWindow(QMainWindow): self.raster.omega.connect(self.daq.set_omega) self.raster.smargon.connect(self.daq.move_smargon) + self.beamline.omega_panel.set_omega_rel.connect(self.daq.set_omega_rel) self.beamline.omega_panel.set_omega.connect(self.daq.set_omega) self.sample_camera.set_omega.connect(self.daq.set_omega) self.beamline.zoom_panel.zoom.connect(self.daq.zoom) diff --git a/gui/src/aaregui/panels/omega_panel.py b/gui/src/aaregui/panels/omega_panel.py index 338167d3..566770b0 100644 --- a/gui/src/aaregui/panels/omega_panel.py +++ b/gui/src/aaregui/panels/omega_panel.py @@ -21,6 +21,7 @@ class OmegaEntryWidget(QWidget): class OmegaPanel(QWidget): set_omega = Signal(float) + set_omega_rel = Signal(float) def __init__(self, parent=None): super().__init__(parent) @@ -57,7 +58,7 @@ class OmegaPanel(QWidget): @Slot(dict) def omega_button_pressed(self, payload: dict): if "rel" in payload: - self.set_omega.emit(self.__omega + payload["rel"]) + self.set_omega_rel.emit(payload["rel"]) elif "abs" in payload: self.set_omega.emit(payload["abs"]) diff --git a/gui/src/aaregui/threads/daq_worker.py b/gui/src/aaregui/threads/daq_worker.py index 934b816e..c69a6fff 100644 --- a/gui/src/aaregui/threads/daq_worker.py +++ b/gui/src/aaregui/threads/daq_worker.py @@ -186,6 +186,10 @@ class DAQWorker(QObject): def set_omega(self, f: float): self.generic_put(f"beamline/omega?val={f:.3f}") + @Slot(float) + def set_omega_rel(self, f: float): + self.generic_put(f"beamline/omega_rel?val={f:.3f}") + @Slot(float) def zoom(self, f: float): self.generic_put(f"beamline/zoom?val={f:.3f}")