mirror of https://github.com/Desuuuu/klipper.git
gcode: Don't dump the message log directly from set_printer_ready()
The set_printer_ready() method can be called from a background thread. Have the main Printer class call a new dump_debug() method in the main thread on a shutdown event. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
17dcb42752
commit
5ebe8ce025
|
@ -72,12 +72,11 @@ class GCodeParser:
|
|||
self.build_handlers()
|
||||
if is_ready and self.is_fileinput and self.fd_handle is None:
|
||||
self.fd_handle = self.reactor.register_fd(self.fd, self.process_data)
|
||||
if not is_ready:
|
||||
logging.info("Dumping gcode input %d blocks" % (
|
||||
len(self.input_log),))
|
||||
# XXX - read from self.input_log is not thread safe
|
||||
for eventtime, data in self.input_log:
|
||||
logging.info("Read %f: %s" % (eventtime, repr(data)))
|
||||
def dump_debug(self):
|
||||
logging.info("Dumping gcode input %d blocks" % (
|
||||
len(self.input_log),))
|
||||
for eventtime, data in self.input_log:
|
||||
logging.info("Read %f: %s" % (eventtime, repr(data)))
|
||||
# Parse input into commands
|
||||
args_r = re.compile('([a-zA-Z*])')
|
||||
def process_commands(self, eventtime):
|
||||
|
|
|
@ -82,6 +82,7 @@ class Printer:
|
|||
self.connect_timer = self.reactor.register_timer(
|
||||
self.connect, self.reactor.NOW)
|
||||
self.all_config_options = {}
|
||||
self.need_dump_debug = False
|
||||
self.state_message = message_startup
|
||||
self.debugoutput = self.dictionary = None
|
||||
self.fileconfig = None
|
||||
|
@ -91,6 +92,10 @@ class Printer:
|
|||
self.debugoutput = debugoutput
|
||||
self.dictionary = dictionary
|
||||
def stats(self, eventtime):
|
||||
if self.need_dump_debug:
|
||||
# Call dump_debug here so it is executed in the main thread
|
||||
self.gcode.dump_debug()
|
||||
self.need_dump_debug = False
|
||||
out = []
|
||||
out.append(self.gcode.stats(eventtime))
|
||||
toolhead = self.objects.get('toolhead')
|
||||
|
@ -174,6 +179,8 @@ class Printer:
|
|||
def get_state_message(self):
|
||||
return self.state_message
|
||||
def note_shutdown(self, msg):
|
||||
if self.state_message == 'Running':
|
||||
self.need_dump_debug = True
|
||||
self.state_message = "Firmware shutdown: %s%s" % (
|
||||
msg, message_shutdown)
|
||||
self.gcode.set_printer_ready(False)
|
||||
|
|
Loading…
Reference in New Issue