aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/klippy.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-05-02 17:39:58 -0400
committerKevin O'Connor <kevin@koconnor.net>2021-05-02 17:51:15 -0400
commit89082b494f9565c6685530b58e0780327b28ceb8 (patch)
tree6a124746243c7fe0c653c48fbd6c1b1c13d48ea1 /klippy/klippy.py
parent8443c0b0f8c64c332f8141175d6d806464679baa (diff)
downloadkutter-89082b494f9565c6685530b58e0780327b28ceb8.tar.gz
kutter-89082b494f9565c6685530b58e0780327b28ceb8.tar.xz
kutter-89082b494f9565c6685530b58e0780327b28ceb8.zip
klippy: Report known software versions on a protocol error during connection
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/klippy.py')
-rw-r--r--klippy/klippy.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/klippy/klippy.py b/klippy/klippy.py
index 327af461..5914c1ca 100644
--- a/klippy/klippy.py
+++ b/klippy/klippy.py
@@ -22,10 +22,12 @@ command to reload the config and restart the host software.
Printer is halted
"""
-message_protocol_error = """
+message_protocol_error1 = """
This type of error is frequently caused by running an older
version of the firmware on the micro-controller (fix by
recompiling and flashing the firmware).
+"""
+message_protocol_error2 = """
Once the underlying issue is corrected, use the "RESTART"
command to reload the config and restart the host software.
Protocol error connecting to printer
@@ -141,6 +143,15 @@ class Printer:
m.add_printer_objects(config)
# Validate that there are no undefined parameters in the config file
pconfig.check_unused_options(config)
+ def _get_versions(self):
+ try:
+ parts = ["%s=%s" % (n.split()[-1], m.get_status()['mcu_version'])
+ for n, m in self.lookup_objects('mcu')]
+ parts.insert(0, "host=%s" % (self.start_args['software_version'],))
+ return "\nKnown versions: %s\n" % (", ".join(parts),)
+ except:
+ logging.exception("Error in _get_versions()")
+ return ""
def _connect(self, eventtime):
try:
self._read_config()
@@ -155,7 +166,9 @@ class Printer:
return
except msgproto.error as e:
logging.exception("Protocol error")
- self._set_state("%s%s" % (str(e), message_protocol_error))
+ self._set_state("%s%s%s%s" % (str(e), message_protocol_error1,
+ self._get_versions(),
+ message_protocol_error2))
util.dump_mcu_build()
return
except mcu.error as e: