mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-08 07:27:43 -06:00
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 <kevin@koconnor.net>
This commit is contained in:
parent
81013ba5c8
commit
d3665699f1
4 changed files with 71 additions and 57 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue