diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index eb00dd17..8c786e86 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -92,7 +92,10 @@ def getSettings(): "ignoreErrorsFromFirmware": s.getBoolean(["serial", "ignoreErrorsFromFirmware"]), "disconnectOnErrors": s.getBoolean(["serial", "disconnectOnErrors"]), "triggerOkForM29": s.getBoolean(["serial", "triggerOkForM29"]), - "supportResendsWithoutOk": s.getBoolean(["serial", "supportResendsWithoutOk"]) + "supportResendsWithoutOk": s.getBoolean(["serial", "supportResendsWithoutOk"]), + "maxTimeoutsIdle": s.getInt(["serial", "maxCommunicationTimeouts", "idle"]), + "maxTimeoutsPrinting": s.getInt(["serial", "maxCommunicationTimeouts", "printing"]), + "maxTimeoutsLong": s.getInt(["serial", "maxCommunicationTimeouts", "long"]) }, "folder": { "uploads": s.getBaseFolder("uploads"), @@ -240,6 +243,9 @@ def setSettings(): if "disconnectOnErrors" in data["serial"]: s.setBoolean(["serial", "disconnectOnErrors"], data["serial"]["disconnectOnErrors"]) if "triggerOkForM29" in data["serial"]: s.setBoolean(["serial", "triggerOkForM29"], data["serial"]["triggerOkForM29"]) if "supportResendsWithoutOk" in data["serial"]: s.setBoolean(["serial", "supportResendsWithoutOk"], data["serial"]["supportResendsWithoutOk"]) + if "maxTimeoutsIdle" in data["serial"]: s.setInt(["serial", "maxCommunicationTimeouts", "idle"], data["serial"]["maxTimeoutsIdle"]) + if "maxTimeoutsPrinting" in data["serial"]: s.setInt(["serial", "maxCommunicationTimeouts", "printing"], data["serial"]["maxTimeoutsPrinting"]) + if "maxTimeoutsLong" in data["serial"]: s.setInt(["serial", "maxCommunicationTimeouts", "long"], data["serial"]["maxTimeoutsLong"]) oldLog = s.getBoolean(["serial", "log"]) if "log" in data["serial"].keys(): s.setBoolean(["serial", "log"], data["serial"]["log"]) diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index d255a063..b0ff5195 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -144,6 +144,9 @@ $(function() { self.serial_disconnectOnErrors = ko.observable(undefined); self.serial_triggerOkForM29 = ko.observable(undefined); self.serial_supportResendsWithoutOk = ko.observable(undefined); + self.serial_maxTimeoutsIdle = ko.observable(undefined); + self.serial_maxTimeoutsPrinting = ko.observable(undefined); + self.serial_maxTimeoutsLong = ko.observable(undefined); self.folder_uploads = ko.observable(undefined); self.folder_timelapse = ko.observable(undefined); @@ -464,6 +467,9 @@ $(function() { self.serial_disconnectOnErrors(response.serial.disconnectOnErrors); self.serial_triggerOkForM29(response.serial.triggerOkForM29); self.serial_supportResendsWithoutOk(response.serial.supportResendsWithoutOk); + self.serial_maxTimeoutsIdle(response.serial.maxTimeoutsIdle); + self.serial_maxTimeoutsPrinting(response.serial.maxTimeoutsPrinting); + self.serial_maxTimeoutsLong(response.serial.maxTimeoutsLong); self.folder_uploads(response.folder.uploads); self.folder_timelapse(response.folder.timelapse); @@ -556,7 +562,10 @@ $(function() { "ignoreErrorsFromFirmware": self.serial_ignoreErrorsFromFirmware(), "disconnectOnErrors": self.serial_disconnectOnErrors(), "triggerOkForM29": self.serial_triggerOkForM29(), - "supportResendsWithoutOk": self.serial_supportResendsWithoutOk() + "supportResendsWithoutOk": self.serial_supportResendsWithoutOk(), + "maxTimeoutsIdle": self.serial_maxTimeoutsIdle(), + "maxTimeoutsPrinting": self.serial_maxTimeoutsPrinting(), + "maxTimeoutsLong": self.serial_maxTimeoutsLong() }, "folder": { "uploads": self.folder_uploads(), diff --git a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 index 697188c1..f0bc919b 100644 --- a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 +++ b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 @@ -126,6 +126,24 @@ {{ _('Simulate an additional `ok` for resend requests') }} +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+