diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-05-02 17:39:58 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-05-02 17:51:15 -0400 |
commit | 89082b494f9565c6685530b58e0780327b28ceb8 (patch) | |
tree | 6a124746243c7fe0c653c48fbd6c1b1c13d48ea1 | |
parent | 8443c0b0f8c64c332f8141175d6d806464679baa (diff) | |
download | kutter-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>
-rw-r--r-- | klippy/klippy.py | 17 | ||||
-rw-r--r-- | klippy/mcu.py | 2 |
2 files changed, 16 insertions, 3 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: diff --git a/klippy/mcu.py b/klippy/mcu.py index 522fff2f..6fb66247 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -811,7 +811,7 @@ class MCU: self._name, eventtime) self._printer.invoke_shutdown("Lost communication with MCU '%s'" % ( self._name,)) - def get_status(self, eventtime): + def get_status(self, eventtime=None): return dict(self._get_status_info) def stats(self, eventtime): load = "mcu_awake=%.03f mcu_task_avg=%.06f mcu_task_stddev=%.06f" % ( |