From caaaa2e4e96f989be073771c1d5af7a1b122b264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 30 Oct 2017 12:59:43 +0100 Subject: [PATCH] Fix temperature autoreport after external reset We didn't reset the capability flag and also didn't resend M155. Now we do at least the latter if we detected that the printer supports temperature auto reporting earlier. --- src/octoprint/util/comm.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/octoprint/util/comm.py b/src/octoprint/util/comm.py index 11551adb..9a571bda 100644 --- a/src/octoprint/util/comm.py +++ b/src/octoprint/util/comm.py @@ -954,7 +954,7 @@ class MachineCom(object): self._recordFilePosition() self._callback.on_comm_print_job_cancelled() - def cancelPrint(self, firmware_error=None): + def cancelPrint(self, firmware_error=None, disable_log_position=False): if not self.isOperational(): return @@ -987,7 +987,7 @@ class MachineCom(object): except: pass - if self._log_position_on_cancel: + if self._log_position_on_cancel and not disable_log_position: self.sendCommand("M400", on_sent=_on_M400_sent) else: self._cancel_preparation_done() @@ -1582,7 +1582,7 @@ class MachineCom(object): "Resetting line numbers to be on the safe side" self._log(message) self._logger.warn(message) - self.resetLineNumbers() + self._onExternalReset() else: verb = "streaming to SD" if self.isStreaming() else "printing" @@ -1590,7 +1590,8 @@ class MachineCom(object): "Aborting job since printer lost state.".format(verb) self._log(message) self._logger.warn(message) - self.cancelPrint() + self.cancelPrint(disable_log_position=True) + self._onExternalReset() eventManager().fire(Events.PRINTER_RESET) @@ -1804,6 +1805,12 @@ class MachineCom(object): eventManager().fire(Events.CONNECTED, payload) self.sendGcodeScript("afterPrinterConnected", replacements=dict(event=payload)) + def _onExternalReset(self): + self.resetLineNumbers() + + if self._temperature_autoreporting: + self._set_autoreport_temperature() + def _getTemperatureTimerInterval(self): busy_default = 4.0 target_default = 2.0