diff --git a/src/murfey/instrument_server/api.py b/src/murfey/instrument_server/api.py index 798fb34f6..cb67ea25f 100644 --- a/src/murfey/instrument_server/api.py +++ b/src/murfey/instrument_server/api.py @@ -138,7 +138,7 @@ def check_token(session_id: MurfeySessionID): @router.post("/sessions/{session_id}/multigrid_watcher") -def start_multigrid_watcher( +def setup_multigrid_watcher( session_id: MurfeySessionID, watcher_spec: MultigridWatcherSpec ): if controllers.get(session_id) is not None: @@ -182,6 +182,13 @@ def start_multigrid_watcher( watchers[session_id].subscribe( controllers[session_id]._multigrid_watcher_finalised, final=True ) + return {"success": True} + + +@router.post("/sessions/{session_id}/start_multigrid_watcher") +def start_multigrid_watcher(session_id: MurfeySessionID): + if watchers.get(session_id) is None: + return {"success": False} watchers[session_id].start() return {"success": True} diff --git a/src/murfey/server/api/instrument.py b/src/murfey/server/api/instrument.py index a40a58050..a03f20d33 100644 --- a/src/murfey/server/api/instrument.py +++ b/src/murfey/server/api/instrument.py @@ -94,7 +94,7 @@ async def check_if_session_is_active(instrument_name: str, session_id: int): @router.post("/sessions/{session_id}/multigrid_watcher") -async def start_multigrid_watcher( +async def setup_multigrid_watcher( session_id: MurfeySessionID, watcher_spec: MultigridWatcherSetup, db=murfey_db ): data = {} @@ -139,6 +139,27 @@ async def start_multigrid_watcher( return data +@router.post("/sessions/{session_id}/start_multigrid_watcher") +async def start_multigrid_watcher(session_id: MurfeySessionID, db=murfey_db): + data = {} + instrument_name = ( + db.exec(select(Session).where(Session.id == session_id)).one().instrument_name + ) + machine_config = get_machine_config(instrument_name=instrument_name)[ + instrument_name + ] + if machine_config.instrument_server_url: + async with aiohttp.ClientSession() as clientsession: + async with clientsession.post( + f"{machine_config.instrument_server_url}/sessions/{session_id}/start_multigrid_watcher", + headers={ + "Authorization": f"Bearer {instrument_server_tokens[session_id]['access_token']}" + }, + ) as resp: + data = await resp.json() + return data + + class ProvidedProcessingParameters(BaseModel): dose_per_frame: float extract_downscale: bool = True