diff options
author | Alec B. Plumb <alec@etherwalker.com> | 2019-01-02 14:45:35 -0800 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2019-01-02 17:45:35 -0500 |
commit | 59e9b6562fb39c1e4860971e818e94a455622547 (patch) | |
tree | c257eaab9c71f3c13b9d3e6590f3ae43e68d1ea7 /klippy/extras | |
parent | f6c9150349d3ffb364a990132a16afa64c890b2e (diff) | |
download | kutter-59e9b6562fb39c1e4860971e818e94a455622547.tar.gz kutter-59e9b6562fb39c1e4860971e818e94a455622547.tar.xz kutter-59e9b6562fb39c1e4860971e818e94a455622547.zip |
respond: An extra for sending messages to the printer host. (#1053)
I have made one change to `gcode.py` to support quoted parameter
values.
I have added support for the basic `M118` command (see
https://reprap.org/wiki/G-code#M118:_Echo_message_on_host). I have
also added a `RESPOND` command that takes extended parameters.
`ECHO` might be a better name than `RESPOND` but is already defined
in `gcode.py`.
Signed-off-by: Alec B. Plumb <alec@etherwalker.com>
Diffstat (limited to 'klippy/extras')
-rw-r--r-- | klippy/extras/respond.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/klippy/extras/respond.py b/klippy/extras/respond.py new file mode 100644 index 00000000..0f8fd24c --- /dev/null +++ b/klippy/extras/respond.py @@ -0,0 +1,51 @@ +# Add 'RESPOND' and 'M118' commands for sending messages to the host +# +# Copyright (C) 2018 Alec Plumb <alec@etherwalker.com> +# +# This file may be distributed under the terms of the GNU GPLv3 license. + +respond_types = { + 'echo': 'echo:', + 'command': '//', + 'error' : '!!', +} + +class HostResponder: + def __init__(self, config): + self.printer = config.get_printer() + self.reactor = self.printer.get_reactor() + self.default_prefix = config.getchoice('default_type', respond_types, 'echo') + self.default_prefix = config.get('default_prefix', self.default_prefix) + self.gcode = self.printer.lookup_object('gcode') + self.cmd_M118_help = "Send a message to the host prefixed with '%s'" % self.default_prefix + self.gcode.register_command( + 'M118', self.cmd_M118, True, desc=self.cmd_M118_help) + self.gcode.register_command('RESPOND', self.cmd_RESPOND, True) + def cmd_M118(self, params): + if '#original' in params: + msg = params['#original'] + if not msg.startswith('M118'): + # Parse out additional info if M118 recd during a print + start = msg.find('M118') + end = msg.rfind('*') + msg = msg[start:end] + if len(msg) > 5: + msg = msg[5:] + else: + msg = '' + self.gcode.respond("%s %s" %(self.default_prefix, msg)) + def cmd_RESPOND(self, params): + respond_type = self.gcode.get_str('TYPE', params, None) + prefix = self.default_prefix + if(respond_type != None): + respond_type = respond_type.lower() + if(respond_type in respond_types): + prefix = respond_types[respond_type] + else: + raise self.gcode.error("RESPOND TYPE '%s' is invalid. Must be one of 'echo', 'command', or 'error'" % respond_type) + prefix = self.gcode.get_str('PREFIX', params, prefix) + msg = self.gcode.get_str('MSG', params, '') + self.gcode.respond("%s %s" %(prefix, msg)) + +def load_config(config): + return HostResponder(config) |