mirror of https://github.com/Desuuuu/klipper.git
klippy: Allow any stats producer to determine when stats are needed
Instead of using the toolhead class to determine if stats should be reported, allow every printer object with a stats() callback to determine if stats are needed. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
08874b9c91
commit
0a5b07f9da
|
@ -77,7 +77,7 @@ class GCodeParser:
|
||||||
self.move_with_transform = transform.move
|
self.move_with_transform = transform.move
|
||||||
self.position_with_transform = transform.get_position
|
self.position_with_transform = transform.get_position
|
||||||
def stats(self, eventtime):
|
def stats(self, eventtime):
|
||||||
return "gcodein=%d" % (self.bytes_read,)
|
return False, "gcodein=%d" % (self.bytes_read,)
|
||||||
def printer_state(self, state):
|
def printer_state(self, state):
|
||||||
if state == 'shutdown':
|
if state == 'shutdown':
|
||||||
if not self.is_printer_ready:
|
if not self.is_printer_ready:
|
||||||
|
|
|
@ -194,7 +194,7 @@ class PrinterHeater:
|
||||||
target_temp = self.target_temp
|
target_temp = self.target_temp
|
||||||
last_temp = self.last_temp
|
last_temp = self.last_temp
|
||||||
last_pwm_value = self.last_pwm_value
|
last_pwm_value = self.last_pwm_value
|
||||||
return '%s: target=%.0f temp=%.0f pwm=%.3f' % (
|
return False, '%s: target=%.0f temp=%.0f pwm=%.3f' % (
|
||||||
self.name, target_temp, last_temp, last_pwm_value)
|
self.name, target_temp, last_temp, last_pwm_value)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -173,14 +173,10 @@ class Printer:
|
||||||
if self.bglogger is not None:
|
if self.bglogger is not None:
|
||||||
self.bglogger.set_rollover_info(name, info)
|
self.bglogger.set_rollover_info(name, info)
|
||||||
def _stats(self, eventtime, force_output=False):
|
def _stats(self, eventtime, force_output=False):
|
||||||
toolhead = self.objects.get('toolhead')
|
|
||||||
if toolhead is None:
|
|
||||||
return eventtime + 1.
|
|
||||||
is_active = toolhead.check_active(eventtime)
|
|
||||||
if not is_active and not force_output:
|
|
||||||
return eventtime + 1.
|
|
||||||
stats = [cb(eventtime) for cb in self.stats_cb]
|
stats = [cb(eventtime) for cb in self.stats_cb]
|
||||||
logging.info("Stats %.1f: %s", eventtime, ' '.join(stats))
|
if max([s[0] for s in stats] + [force_output]):
|
||||||
|
logging.info("Stats %.1f: %s", eventtime,
|
||||||
|
' '.join([s[1] for s in stats]))
|
||||||
return eventtime + 1.
|
return eventtime + 1.
|
||||||
def _try_load_module(self, config, section):
|
def _try_load_module(self, config, section):
|
||||||
if section in self.objects:
|
if section in self.objects:
|
||||||
|
|
|
@ -747,8 +747,8 @@ class MCU:
|
||||||
msg = "%s: mcu_awake=%.03f mcu_task_avg=%.06f mcu_task_stddev=%.06f" % (
|
msg = "%s: mcu_awake=%.03f mcu_task_avg=%.06f mcu_task_stddev=%.06f" % (
|
||||||
self._name, self._mcu_tick_awake, self._mcu_tick_avg,
|
self._name, self._mcu_tick_awake, self._mcu_tick_avg,
|
||||||
self._mcu_tick_stddev)
|
self._mcu_tick_stddev)
|
||||||
return ' '.join([msg, self._serial.stats(eventtime),
|
return False, ' '.join([msg, self._serial.stats(eventtime),
|
||||||
self._clocksync.stats(eventtime)])
|
self._clocksync.stats(eventtime)])
|
||||||
def printer_state(self, state):
|
def printer_state(self, state):
|
||||||
if state == 'connect':
|
if state == 'connect':
|
||||||
self._connect()
|
self._connect()
|
||||||
|
|
|
@ -358,17 +358,13 @@ class ToolHead:
|
||||||
self.move_queue.set_extruder(extruder)
|
self.move_queue.set_extruder(extruder)
|
||||||
self.commanded_pos[3] = extrude_pos
|
self.commanded_pos[3] = extrude_pos
|
||||||
# Misc commands
|
# Misc commands
|
||||||
def check_active(self, eventtime):
|
def stats(self, eventtime):
|
||||||
for m in self.all_mcus:
|
for m in self.all_mcus:
|
||||||
m.check_active(self.print_time, eventtime)
|
m.check_active(self.print_time, eventtime)
|
||||||
if not self.sync_print_time:
|
buffer_time = self.print_time - self.mcu.estimated_print_time(eventtime)
|
||||||
return True
|
is_active = buffer_time > -60. or not self.sync_print_time
|
||||||
return self.print_time + 60. > self.mcu.estimated_print_time(eventtime)
|
return is_active, "print_time=%.3f buffer_time=%.3f print_stall=%d" % (
|
||||||
def stats(self, eventtime):
|
self.print_time, max(buffer_time, 0.), self.print_stall)
|
||||||
est_print_time = self.mcu.estimated_print_time(eventtime)
|
|
||||||
buffer_time = max(0., self.print_time - est_print_time)
|
|
||||||
return "print_time=%.3f buffer_time=%.3f print_stall=%d" % (
|
|
||||||
self.print_time, buffer_time, self.print_stall)
|
|
||||||
def printer_state(self, state):
|
def printer_state(self, state):
|
||||||
if state == 'shutdown':
|
if state == 'shutdown':
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue