gcode: Raise an error if a duplicate command is registered

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-05-20 13:04:52 -04:00
parent 2ab47cd20c
commit 33c2c8f1bd
3 changed files with 4 additions and 0 deletions

View File

@ -12,6 +12,7 @@ class HomingOverride:
self.script = config.get('gcode')
self.in_script = False
self.gcode = self.printer.lookup_object('gcode')
self.gcode.register_command("G28", None)
self.gcode.register_command("G28", self.cmd_G28)
def cmd_G28(self, params):
if self.in_script:

View File

@ -19,6 +19,7 @@ class VirtualSD:
self.work_timer = None
# Register commands
self.gcode = printer.lookup_object('gcode')
self.gcode.register_command('M21', None)
for cmd in ['M20', 'M21', 'M23', 'M24', 'M25', 'M26', 'M27']:
self.gcode.register_command(cmd, getattr(self, 'cmd_' + cmd))
for cmd in ['M28', 'M29', 'M30']:

View File

@ -62,6 +62,8 @@ class GCodeParser:
if cmd in self.base_gcode_handlers:
del self.base_gcode_handlers[cmd]
return
if cmd in self.ready_gcode_handlers:
raise error("gcode command %s already registered" % (cmd,))
if not (len(cmd) >= 2 and not cmd[0].isupper() and cmd[1].isdigit()):
origfunc = func
func = lambda params: origfunc(self.get_extended_params(params))