From 5acc1816242510ddfdde7eeb972a5ba70ce8a26e Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Tue, 3 Mar 2020 17:13:29 -0500 Subject: display_status: Separate out M73 and M117 handling to new module Move M73 and M117 handling from display.py to a new display_status.py module. Signed-off-by: Kevin O'Connor --- klippy/extras/display_status.py | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 klippy/extras/display_status.py (limited to 'klippy/extras/display_status.py') diff --git a/klippy/extras/display_status.py b/klippy/extras/display_status.py new file mode 100644 index 00000000..ce2cece5 --- /dev/null +++ b/klippy/extras/display_status.py @@ -0,0 +1,52 @@ +# Module to handle M73 and M117 display status commands +# +# Copyright (C) 2018-2020 Kevin O'Connor +# Copyright (C) 2018 Eric Callahan +# +# This file may be distributed under the terms of the GNU GPLv3 license. + +M73_TIMEOUT = 5. + +class DisplayStatus: + def __init__(self, config): + self.printer = config.get_printer() + self.expire_progress = 0. + self.progress = self.message = None + # Register commands + gcode = self.printer.lookup_object('gcode') + gcode.register_command('M73', self.cmd_M73) + gcode.register_command('M117', self.cmd_M117) + def get_status(self, eventtime): + progress = self.progress + if progress is not None and eventtime > self.expire_progress: + idle_timeout = self.printer.lookup_object('idle_timeout') + idle_timeout_info = idle_timeout.get_status(eventtime) + if idle_timeout_info['state'] != "Printing": + self.progress = progress = None + if progress is None: + progress = 0. + sdcard = self.printer.lookup_object('virtual_sdcard', None) + if sdcard is not None: + progress = sdcard.get_status(eventtime)['progress'] + return { 'progress': progress, 'message': self.message } + def cmd_M73(self, params): + gcode = self.printer.lookup_object('gcode') + progress = gcode.get_float('P', params, 0.) / 100. + self.progress = min(1., max(0., progress)) + curtime = self.printer.get_reactor().monotonic() + self.expire_progress = curtime + M73_TIMEOUT + def cmd_M117(self, params): + msg = params['#original'] + umsg = msg.upper() + if not umsg.startswith('M117'): + # Parse out additional info if M117 recd during a print + start = umsg.find('M117') + end = msg.rfind('*') + msg = msg[start:end] + if len(msg) > 5: + self.message = msg[5:] + else: + self.message = None + +def load_config(config): + return DisplayStatus(config) -- cgit v1.2.3-70-g09d2