aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
Diffstat (limited to 'klippy')
-rw-r--r--klippy/gcode.py35
-rw-r--r--klippy/kinematics/extruder.py29
2 files changed, 31 insertions, 33 deletions
diff --git a/klippy/gcode.py b/klippy/gcode.py
index 86481789..486df2d6 100644
--- a/klippy/gcode.py
+++ b/klippy/gcode.py
@@ -399,27 +399,6 @@ class GCodeParser:
print_time = self.toolhead.get_last_move_time()
self.respond(self._get_temp(eventtime))
eventtime = self.reactor.pause(eventtime + 1.)
- def _set_temp(self, params, wait=False):
- temp = self.get_float('S', params, 0.)
- heater = None
- if 'T' in params:
- index = self.get_int('T', params, minval=0)
- section = 'extruder'
- if index:
- section = 'extruder%d' % (index,)
- extruder = self.printer.lookup_object(section, None)
- if extruder is not None:
- heater = extruder.get_heater()
- else:
- heater = self.toolhead.get_extruder().get_heater()
- if heater is None:
- if temp > 0.:
- self.respond_error("Heater not configured")
- return
- print_time = self.toolhead.get_last_move_time()
- heater.set_temp(print_time, temp)
- if wait and temp:
- self.wait_for_temperature(heater)
# G-Code special command handlers
def cmd_default(self, params):
if not self.is_printer_ready:
@@ -435,7 +414,7 @@ class GCodeParser:
if handler is not None:
handler(params)
return
- elif cmd == 'M140' and not self.get_float('S', params, 0.):
+ elif cmd in ['M140', 'M104'] and not self.get_float('S', params, 0.):
# Don't warn about requests to turn off heaters when not present
return
elif cmd == 'M107' or (cmd == 'M106' and (
@@ -457,8 +436,7 @@ class GCodeParser:
'G1', 'G4', 'G28', 'M400',
'G20', 'M82', 'M83', 'G90', 'G91', 'G92', 'M114', 'M220', 'M221',
'SET_GCODE_OFFSET', 'SAVE_GCODE_STATE', 'RESTORE_GCODE_STATE',
- 'M105', 'M104', 'M109',
- 'M112', 'M115', 'IGNORE', 'GET_POSITION',
+ 'M105', 'M112', 'M115', 'IGNORE', 'GET_POSITION',
'RESTART', 'FIRMWARE_RESTART', 'ECHO', 'STATUS', 'HELP']
# G-Code movement commands
cmd_G1_aliases = ['G0']
@@ -613,7 +591,7 @@ class GCodeParser:
speed = self.get_float('MOVE_SPEED', params, self.speed, above=0.)
self.last_position[:3] = state['last_position'][:3]
self.move_with_transform(self.last_position, speed)
- # G-Code temperature commands
+ # G-Code miscellaneous commands
cmd_M105_when_not_ready = True
def cmd_M105(self, params):
# Get Extruder Temperature
@@ -622,13 +600,6 @@ class GCodeParser:
self.ack(msg)
else:
self.respond(msg)
- def cmd_M104(self, params):
- # Set Extruder Temperature
- self._set_temp(params)
- def cmd_M109(self, params):
- # Set Extruder Temperature and Wait
- self._set_temp(params, wait=True)
- # G-Code miscellaneous commands
cmd_M112_when_not_ready = True
def cmd_M112(self, params):
# Emergency Stop
diff --git a/klippy/kinematics/extruder.py b/klippy/kinematics/extruder.py
index 82e9c235..e9978d6f 100644
--- a/klippy/kinematics/extruder.py
+++ b/klippy/kinematics/extruder.py
@@ -62,6 +62,8 @@ class PrinterExtruder:
gcode = self.printer.lookup_object('gcode')
if self.name == 'extruder':
toolhead.set_extruder(self, self.extrude_pos)
+ gcode.register_command("M104", self.cmd_M104)
+ gcode.register_command("M109", self.cmd_M109)
gcode.register_mux_command("SET_PRESSURE_ADVANCE", "EXTRUDER", None,
self.cmd_default_SET_PRESSURE_ADVANCE,
desc=self.cmd_SET_PRESSURE_ADVANCE_help)
@@ -87,7 +89,7 @@ class PrinterExtruder:
self.pressure_advance = pressure_advance
self.pressure_advance_smooth_time = smooth_time
def get_status(self, eventtime):
- return dict(self.get_heater().get_status(eventtime),
+ return dict(self.heater.get_status(eventtime),
pressure_advance=self.pressure_advance,
smooth_time=self.pressure_advance_smooth_time)
def get_name(self):
@@ -143,6 +145,31 @@ class PrinterExtruder:
1., pressure_advance, 0.,
start_v, cruise_v, accel)
self.extrude_pos = move.end_pos[3]
+ def cmd_M104(self, params, wait=False):
+ # Set Extruder Temperature
+ toolhead = self.printer.lookup_object('toolhead')
+ gcode = self.printer.lookup_object('gcode')
+ temp = gcode.get_float('S', params, 0.)
+ if 'T' in params:
+ index = gcode.get_int('T', params, minval=0)
+ section = 'extruder'
+ if index:
+ section = 'extruder%d' % (index,)
+ extruder = self.printer.lookup_object(section, None)
+ if extruder is None:
+ if temp <= 0.:
+ return
+ raise gcode.error("Extruder not configured")
+ else:
+ extruder = toolhead.get_extruder()
+ print_time = toolhead.get_last_move_time()
+ heater = extruder.get_heater()
+ heater.set_temp(print_time, temp)
+ if wait and temp:
+ gcode.wait_for_temperature(heater)
+ def cmd_M109(self, params):
+ # Set Extruder Temperature and Wait
+ self.cmd_M104(params, wait=True)
cmd_SET_PRESSURE_ADVANCE_help = "Set pressure advance parameters"
def cmd_default_SET_PRESSURE_ADVANCE(self, params):
extruder = self.printer.lookup_object('toolhead').get_extruder()