aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/error_mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2024-06-18 12:51:32 -0400
committerKevin O'Connor <kevin@koconnor.net>2024-06-21 15:32:30 -0400
commit9fa0fb1a0ebca3ed4be887417b255b26fc99bbfd (patch)
treeeb9bcf1280395c0adc210028c2431b7273a5d724 /klippy/extras/error_mcu.py
parent7149bb1b6de2616f48b40f060ad8c887cb6a84d2 (diff)
downloadkutter-9fa0fb1a0ebca3ed4be887417b255b26fc99bbfd.tar.gz
kutter-9fa0fb1a0ebca3ed4be887417b255b26fc99bbfd.tar.xz
kutter-9fa0fb1a0ebca3ed4be887417b255b26fc99bbfd.zip
error_mcu: Support mechanism to add per-instance context to a shutdown
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/error_mcu.py')
-rw-r--r--klippy/extras/error_mcu.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/klippy/extras/error_mcu.py b/klippy/extras/error_mcu.py
index 536debbb..dc91c33a 100644
--- a/klippy/extras/error_mcu.py
+++ b/klippy/extras/error_mcu.py
@@ -61,10 +61,13 @@ def error_hint(msg):
class PrinterMCUError:
def __init__(self, config):
self.printer = config.get_printer()
+ self.clarify_callbacks = {}
self.printer.register_event_handler("klippy:notify_mcu_shutdown",
self._handle_notify_mcu_shutdown)
self.printer.register_event_handler("klippy:notify_mcu_error",
self._handle_notify_mcu_error)
+ def add_clarify(self, msg, callback):
+ self.clarify_callbacks.setdefault(msg, []).append(callback)
def _check_mcu_shutdown(self, msg, details):
mcu_name = details['mcu']
mcu_msg = details['reason']
@@ -73,9 +76,17 @@ class PrinterMCUError:
if event_type == 'is_shutdown':
prefix = "Previous MCU '%s' shutdown: " % (mcu_name,)
# Lookup generic hint
- hint = error_hint(msg)
+ hint = error_hint(mcu_msg)
+ # Add per instance help
+ clarify = [cb(msg, details)
+ for cb in self.clarify_callbacks.get(mcu_msg, [])]
+ clarify = [cm for cm in clarify if cm is not None]
+ clarify_msg = ""
+ if clarify:
+ clarify_msg = "\n".join(["", ""] + clarify + [""])
# Update error message
- newmsg = "%s%s%s%s" % (prefix, mcu_msg, hint, message_shutdown)
+ newmsg = "%s%s%s%s%s" % (prefix, mcu_msg, clarify_msg,
+ hint, message_shutdown)
self.printer.update_error_msg(msg, newmsg)
def _handle_notify_mcu_shutdown(self, msg, details):
if msg == "MCU shutdown":