From 07388f4d38cac01e869abf60667f07c3710eeb1e Mon Sep 17 00:00:00 2001 From: Eric Callahan Date: Sun, 5 Nov 2023 12:26:31 -0500 Subject: [PATCH] simplyprint: add support for gcode acknowledgements Signed-off-by: Eric Callahan --- moonraker/components/simplyprint.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/moonraker/components/simplyprint.py b/moonraker/components/simplyprint.py index 06f32e1..a30d7ef 100644 --- a/moonraker/components/simplyprint.py +++ b/moonraker/components/simplyprint.py @@ -358,11 +358,11 @@ class SimplyPrint(Subscribable): elif demand == "gcode": if not kconn.is_connected(): return - script_list = args.get("list", []) + script_list: List[str] = args.get("list", []) + ident: Optional[str] = args.get("identifier", None) if script_list: script = "\n".join(script_list) - coro = self.klippy_apis.run_gcode(script, None) - self.eventloop.create_task(coro) + self.eventloop.create_task(self._handle_gcode_demand(script, ident)) elif demand == "webcam_snapshot": self.eventloop.create_task(self.webcam_stream.post_image(args)) elif demand == "file": @@ -407,6 +407,26 @@ class SimplyPrint(Subscribable): self.sp_info[name] = data self.spdb[name] = data + async def _handle_gcode_demand( + self, script: str, ident: Optional[str] + ) -> None: + success: bool = True + msg: Optional[str] = None + try: + await self.klippy_apis.run_gcode(script) + except self.server.error as e: + msg = str(e) + success = False + if ident is not None: + self.send_sp( + "gcode_executed", + { + "identifier": ident, + "success": success, + "message": msg + } + ) + async def _call_internal_api(self, method: str, **kwargs) -> Any: itransport: InternalTransport itransport = self.server.lookup_component("internal_transport")