aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-08-05 11:43:45 -0400
committerKevin O'Connor <kevin@koconnor.net>2020-08-20 21:03:22 -0400
commit4c5e93d51dca2393946a67646499fef5fdd034b0 (patch)
tree5450c95a3aa8fe5554dad97df2adf9b2b05c1a64 /klippy/extras
parentcd7c1b8e68d8234524149c62e8ea2ad0bda07d2f (diff)
downloadkutter-4c5e93d51dca2393946a67646499fef5fdd034b0.tar.gz
kutter-4c5e93d51dca2393946a67646499fef5fdd034b0.tar.xz
kutter-4c5e93d51dca2393946a67646499fef5fdd034b0.zip
gcode: Split G0/G1 command handling to new gcode_move class
Split up the main GCodeParser class into GCodeDispatch and GCodeMove classes. The GCodeMove class is now available using the "gcode_move" printer object name. This split simplifies the gcode.py code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/bed_mesh.py7
-rw-r--r--klippy/extras/bed_tilt.py7
-rw-r--r--klippy/extras/display/display.cfg4
-rw-r--r--klippy/extras/display/menu.cfg26
-rw-r--r--klippy/extras/gcode_arcs.py7
-rw-r--r--klippy/extras/homing_override.py4
-rw-r--r--klippy/extras/print_stats.py6
-rw-r--r--klippy/extras/skew_correction.py8
-rw-r--r--klippy/extras/tuning_tower.py8
-rw-r--r--klippy/extras/virtual_sdcard.py1
10 files changed, 42 insertions, 36 deletions
diff --git a/klippy/extras/bed_mesh.py b/klippy/extras/bed_mesh.py
index cfc7807e..b1c0f6b8 100644
--- a/klippy/extras/bed_mesh.py
+++ b/klippy/extras/bed_mesh.py
@@ -87,7 +87,9 @@ class BedMesh:
self.gcode.register_command(
'BED_MESH_CLEAR', self.cmd_BED_MESH_CLEAR,
desc=self.cmd_BED_MESH_CLEAR_help)
- self.gcode.set_move_transform(self)
+ # Register transform
+ gcode_move = self.printer.lookup_object('gcode_move')
+ gcode_move.set_move_transform(self)
def handle_ready(self):
self.toolhead = self.printer.lookup_object('toolhead')
self.bmc.print_generated_points(logging.info)
@@ -126,7 +128,8 @@ class BedMesh:
self.z_mesh = mesh
self.splitter.initialize(mesh)
# cache the current position before a transform takes place
- self.gcode.reset_last_position()
+ gcode_move = self.printer.lookup_object('gcode_move')
+ gcode_move.reset_last_position()
def get_z_factor(self, z_pos):
if z_pos >= self.fade_end:
return 0.
diff --git a/klippy/extras/bed_tilt.py b/klippy/extras/bed_tilt.py
index dd75655a..dfcb682f 100644
--- a/klippy/extras/bed_tilt.py
+++ b/klippy/extras/bed_tilt.py
@@ -19,8 +19,8 @@ class BedTilt:
BedTiltCalibrate(config, self)
self.toolhead = None
# Register move transform with g-code class
- gcode = self.printer.lookup_object('gcode')
- gcode.set_move_transform(self)
+ gcode_move = self.printer.lookup_object('gcode_move')
+ gcode_move.set_move_transform(self)
def handle_connect(self):
self.toolhead = self.printer.lookup_object('toolhead')
def get_position(self):
@@ -34,6 +34,8 @@ class BedTilt:
self.x_adjust = x_adjust
self.y_adjust = y_adjust
self.z_adjust = z_adjust
+ gcode_move = self.printer.lookup_object('gcode_move')
+ gcode_move.reset_last_position()
configfile = self.printer.lookup_object('configfile')
configfile.set('bed_tilt', 'x_adjust', "%.6f" % (x_adjust,))
configfile.set('bed_tilt', 'y_adjust', "%.6f" % (y_adjust,))
@@ -80,7 +82,6 @@ class BedTiltCalibrate:
z_adjust = (new_params['z_adjust'] - z_offset
- x_adjust * offsets[0] - y_adjust * offsets[1])
self.bedtilt.update_adjust(x_adjust, y_adjust, z_adjust)
- self.gcode.reset_last_position()
# Log and report results
logging.info("Calculated bed_tilt parameters: %s", new_params)
for pos in positions:
diff --git a/klippy/extras/display/display.cfg b/klippy/extras/display/display.cfg
index 35a68dd7..a6377914 100644
--- a/klippy/extras/display/display.cfg
+++ b/klippy/extras/display/display.cfg
@@ -83,7 +83,7 @@ text: { render("_heater_temperature", param_heater_name="heater_bed") }
position: 1, 10
text:
~feedrate~
- { "{:>4.0%}".format(printer.gcode.speed_factor) }
+ { "{:>4.0%}".format(printer.gcode_move.speed_factor) }
[display_data _default_16x4 print_progress]
position: 2, 0
@@ -164,7 +164,7 @@ text:
position: 2, 0
text:
~feedrate~
- { "{:^4.0%}".format(printer.gcode.speed_factor) }
+ { "{:^4.0%}".format(printer.gcode_move.speed_factor) }
[display_data _default_20x4 print_progress]
position: 2, 8
diff --git a/klippy/extras/display/menu.cfg b/klippy/extras/display/menu.cfg
index 8ac61c4e..77009a1d 100644
--- a/klippy/extras/display/menu.cfg
+++ b/klippy/extras/display/menu.cfg
@@ -96,7 +96,7 @@ name: Tune
[menu __main __tune __speed]
type: input
name: Speed: {'%3d' % (menu.input*100)}%
-input: {printer.gcode.speed_factor}
+input: {printer.gcode_move.speed_factor}
input_min: 0
input_max: 2
input_step: 0.01
@@ -107,7 +107,7 @@ gcode:
[menu __main __tune __flow]
type: input
name: Flow: {'%3d' % (menu.input*100)}%
-input: {printer.gcode.extrude_factor}
+input: {printer.gcode_move.extrude_factor}
input_min: 0
input_max: 2
input_step: 0.01
@@ -118,7 +118,7 @@ gcode:
[menu __main __tune __offsetz]
type: input
name: Offset Z:{'%05.3f' % menu.input}
-input: {printer.gcode.homing_origin.z}
+input: {printer.gcode_move.homing_origin.z}
input_min: -5
input_max: 5
input_step: 0.005
@@ -260,7 +260,7 @@ name: Move 10mm
[menu __main __control __move_10mm __axis_x]
type: input
name: Move X:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.x}
+input: {printer.gcode_move.gcode_position.x}
input_min: 0
input_max: 200
input_step: 10.0
@@ -273,7 +273,7 @@ gcode:
[menu __main __control __move_10mm __axis_y]
type: input
name: Move Y:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.y}
+input: {printer.gcode_move.gcode_position.y}
input_min: 0
input_max: 200
input_step: 10.0
@@ -287,7 +287,7 @@ gcode:
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Move Z:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.z}
+input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: 200
input_step: 10.0
@@ -320,7 +320,7 @@ name: Move 1mm
[menu __main __control __move_1mm __axis_x]
type: input
name: Move X:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.x}
+input: {printer.gcode_move.gcode_position.x}
input_min: 0
input_max: 200
input_step: 1.0
@@ -333,7 +333,7 @@ gcode:
[menu __main __control __move_1mm __axis_y]
type: input
name: Move Y:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.y}
+input: {printer.gcode_move.gcode_position.y}
input_min: 0
input_max: 200
input_step: 1.0
@@ -347,7 +347,7 @@ gcode:
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Move Z:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.z}
+input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: 200
input_step: 1.0
@@ -380,7 +380,7 @@ name: Move 0.1mm
[menu __main __control __move_01mm __axis_x]
type: input
name: Move X:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.x}
+input: {printer.gcode_move.gcode_position.x}
input_min: 0
input_max: 200
input_step: 0.1
@@ -393,7 +393,7 @@ gcode:
[menu __main __control __move_01mm __axis_y]
type: input
name: Move Y:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.y}
+input: {printer.gcode_move.gcode_position.y}
input_min: 0
input_max: 200
input_step: 0.1
@@ -407,7 +407,7 @@ gcode:
type: input
enable: {not printer.idle_timeout.state == "Printing"}
name: Move Z:{'%05.1f' % menu.input}
-input: {printer.gcode.gcode_position.z}
+input: {printer.gcode_move.gcode_position.z}
input_min: 0
input_max: 200
input_step: 0.1
@@ -677,7 +677,7 @@ gcode:
[menu __main __setup __calib __delta_calib_man __move_z]
type: input
name: Move Z: {'%03.2f' % menu.input}
-input: {printer.gcode.gcode_position.z}
+input: {printer.gcode_move.gcode_position.z}
input_step: 1
realtime: True
gcode:
diff --git a/klippy/extras/gcode_arcs.py b/klippy/extras/gcode_arcs.py
index 13a02697..ad973562 100644
--- a/klippy/extras/gcode_arcs.py
+++ b/klippy/extras/gcode_arcs.py
@@ -17,14 +17,15 @@ class ArcSupport:
self.printer = config.get_printer()
self.mm_per_arc_segment = config.getfloat('resolution', 1., above=0.0)
+ self.gcode_move = self.printer.lookup_object('gcode_move')
self.gcode = self.printer.lookup_object('gcode')
self.gcode.register_command("G2", self.cmd_G2)
self.gcode.register_command("G3", self.cmd_G2)
def cmd_G2(self, gcmd):
- gcodestatus = self.gcode.get_status()
+ gcodestatus = self.gcode_move.get_status()
if not gcodestatus['absolute_coordinates']:
- raise self.gcode.error("G2/G3 does not support relative move mode")
+ raise gcmd.error("G2/G3 does not support relative move mode")
currentPos = gcodestatus['gcode_position']
# Parse parameters
@@ -60,7 +61,7 @@ class ArcSupport:
if asF is not None:
g1_params['F'] = asF
g1_gcmd = self.gcode.create_gcode_command("G1", "G1", g1_params)
- self.gcode.cmd_G1(g1_gcmd)
+ self.gcode_move.cmd_G1(g1_gcmd)
# function planArc() originates from marlin plan_arc()
# https://github.com/MarlinFirmware/Marlin
diff --git a/klippy/extras/homing_override.py b/klippy/extras/homing_override.py
index d7a9a874..9d683537 100644
--- a/klippy/extras/homing_override.py
+++ b/klippy/extras/homing_override.py
@@ -32,14 +32,14 @@ class HomingOverride:
if no_axis:
override = True
else:
- # check if we home an axsis which needs the override
+ # check if we home an axis which needs the override
override = False
for axis in self.axes:
if gcmd.get(axis, None) is not None:
override = True
if not override:
- self.gcode.cmd_G28(gcmd)
+ self.prev_G28(gcmd)
return
# Calculate forced position (if configured)
diff --git a/klippy/extras/print_stats.py b/klippy/extras/print_stats.py
index 1a3fcb22..67bb2f33 100644
--- a/klippy/extras/print_stats.py
+++ b/klippy/extras/print_stats.py
@@ -7,11 +7,11 @@
class PrintStats:
def __init__(self, config):
printer = config.get_printer()
- self.gcode = printer.lookup_object('gcode')
+ self.gcode_move = printer.lookup_object('gcode_move')
self.reactor = printer.get_reactor()
self.reset()
def _update_filament_usage(self, eventtime):
- gc_status = self.gcode.get_status(eventtime)
+ gc_status = self.gcode_move.get_status(eventtime)
cur_epos = gc_status['position'].e
self.filament_used += (cur_epos - self.last_epos) \
/ gc_status['extrude_factor']
@@ -29,7 +29,7 @@ class PrintStats:
self.prev_pause_duration += pause_duration
self.last_pause_time = None
# Reset last e-position
- gc_status = self.gcode.get_status(curtime)
+ gc_status = self.gcode_move.get_status(curtime)
self.last_epos = gc_status['position'].e
self.state = "printing"
self.error_message = ""
diff --git a/klippy/extras/skew_correction.py b/klippy/extras/skew_correction.py
index afb68bbb..9a0ee2ad 100644
--- a/klippy/extras/skew_correction.py
+++ b/klippy/extras/skew_correction.py
@@ -40,8 +40,8 @@ class PrinterSkew:
gcode.register_command('SKEW_PROFILE', self.cmd_SKEW_PROFILE,
desc=self.cmd_SKEW_PROFILE_help)
def _handle_ready(self):
- gcode = self.printer.lookup_object('gcode')
- self.next_transform = gcode.set_move_transform(self, force=True)
+ gcode_move = self.printer.lookup_object('gcode_move')
+ self.next_transform = gcode_move.set_move_transform(self, force=True)
def _load_storage(self, config):
stored_profs = config.get_prefix_sections(self.name)
# Remove primary skew_correction section, as it is not a stored profile
@@ -73,8 +73,8 @@ class PrinterSkew:
self.xy_factor = xy_factor
self.xz_factor = xz_factor
self.yz_factor = yz_factor
- gcode = self.printer.lookup_object('gcode')
- gcode.reset_last_position()
+ gcode_move = self.printer.lookup_object('gcode_move')
+ gcode_move.reset_last_position()
cmd_GET_CURRENT_SKEW_help = "Report current printer skew"
def cmd_GET_CURRENT_SKEW(self, gcmd):
out = "Current Printer Skew:"
diff --git a/klippy/extras/tuning_tower.py b/klippy/extras/tuning_tower.py
index 87a0093d..e16192d5 100644
--- a/klippy/extras/tuning_tower.py
+++ b/klippy/extras/tuning_tower.py
@@ -15,6 +15,7 @@ class TuningTower:
self.last_z = self.start = self.factor = self.band = 0.
self.last_command_value = None
self.command_fmt = ""
+ self.gcode_move = self.printer.lookup_object("gcode_move")
# Register command
self.gcode = self.printer.lookup_object("gcode")
self.gcode.register_command("TUNING_TOWER", self.cmd_TUNING_TOWER,
@@ -34,7 +35,8 @@ class TuningTower:
self.command_fmt = "%s %s%%.9f" % (command, parameter)
else:
self.command_fmt = "%s %s=%%.9f" % (command, parameter)
- self.normal_transform = self.gcode.set_move_transform(self, force=True)
+ nt = self.gcode_move.set_move_transform(self, force=True)
+ self.normal_transform = nt
self.last_z = -99999999.9
self.last_command_value = None
self.get_position()
@@ -59,7 +61,7 @@ class TuningTower:
self.end_test()
else:
# Process update
- gcode_z = self.gcode.get_status()['gcode_position'].z
+ gcode_z = self.gcode_move.get_status()['gcode_position'].z
newval = self.calc_value(gcode_z)
self.last_z = z
if newval != self.last_command_value:
@@ -71,7 +73,7 @@ class TuningTower:
normal_transform.move(newpos, speed)
def end_test(self):
self.gcode.respond_info("Ending tuning test mode")
- self.gcode.set_move_transform(self.normal_transform, force=True)
+ self.gcode_move.set_move_transform(self.normal_transform, force=True)
self.normal_transform = None
def load_config(config):
diff --git a/klippy/extras/virtual_sdcard.py b/klippy/extras/virtual_sdcard.py
index 7ab58654..699add31 100644
--- a/klippy/extras/virtual_sdcard.py
+++ b/klippy/extras/virtual_sdcard.py
@@ -24,7 +24,6 @@ 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']: