From d3665699f168bc1b1413fa8dddba318d6adbdf87 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Fri, 19 Jan 2018 22:49:27 -0500 Subject: klippy: Support generic printer_state() and stats() callbacks Instead of hardcoding which objects are called on state transitions, allow any "printer object" to be invoked if it has a printer_state() method. Convert connect, ready, shutdown, and disconnect callbacks to this mechanism. Similarly, allow all printer objects to provide a stats() callback. Signed-off-by: Kevin O'Connor --- klippy/gcode.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'klippy/gcode.py') diff --git a/klippy/gcode.py b/klippy/gcode.py index 261bbf22..c6d5e23d 100644 --- a/klippy/gcode.py +++ b/klippy/gcode.py @@ -68,7 +68,18 @@ class GCodeParser: self.gcode_help[cmd] = desc def stats(self, eventtime): return "gcodein=%d" % (self.bytes_read,) - def connect(self): + def printer_state(self, state): + if state == 'shutdown': + if not self.is_printer_ready: + return + self.is_printer_ready = False + self.gcode_handlers = self.base_gcode_handlers + self.dump_debug() + if self.is_fileinput: + self.printer.request_exit() + return + if state != 'ready': + return self.is_printer_ready = True self.gcode_handlers = self.ready_gcode_handlers # Lookup printer components @@ -85,14 +96,6 @@ class GCodeParser: def reset_last_position(self): if self.toolhead is not None: self.last_position = self.toolhead.get_position() - def do_shutdown(self): - if not self.is_printer_ready: - return - self.is_printer_ready = False - self.gcode_handlers = self.base_gcode_handlers - self.dump_debug() - if self.is_fileinput: - self.printer.request_exit() def motor_heater_off(self): if self.toolhead is None: return -- cgit v1.2.3-70-g09d2