aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/gcode.py
diff options
context:
space:
mode:
authorjohn-- <john@gprime.net>2019-01-02 17:44:02 -0500
committerKevinOConnor <kevin@koconnor.net>2019-01-02 17:44:02 -0500
commitf6c9150349d3ffb364a990132a16afa64c890b2e (patch)
treeb85a7e6c402deca6a479d074246a7ada6a148205 /klippy/gcode.py
parentf4d323adbce7b82f44d6813a0fea0f1537ae234f (diff)
downloadkutter-f6c9150349d3ffb364a990132a16afa64c890b2e.tar.gz
kutter-f6c9150349d3ffb364a990132a16afa64c890b2e.tar.xz
kutter-f6c9150349d3ffb364a990132a16afa64c890b2e.zip
heater: take a gcode_id when setting up a heater (#1028)
Allow an arbitrary gcode_id to be supplied during heater setup. This allows future extras to register additional IDs beyond B, and T#. Signed-off-by: John Jardine <john@gprime.net>
Diffstat (limited to 'klippy/gcode.py')
-rw-r--r--klippy/gcode.py35
1 files changed, 16 insertions, 19 deletions
diff --git a/klippy/gcode.py b/klippy/gcode.py
index dcc88199..2897b664 100644
--- a/klippy/gcode.py
+++ b/klippy/gcode.py
@@ -52,7 +52,7 @@ class GCodeParser:
# G-Code state
self.need_ack = False
self.toolhead = self.fan = self.extruder = None
- self.heaters = []
+ self.heater = None
self.speed = 25.0
self.axis2pos = {'X': 0, 'Y': 1, 'Z': 2, 'E': 3}
def register_command(self, cmd, func, when_not_ready=False, desc=None):
@@ -130,6 +130,7 @@ class GCodeParser:
self.is_printer_ready = True
self.gcode_handlers = self.ready_gcode_handlers
# Lookup printer components
+ self.heater = self.printer.lookup_object('heater')
self.toolhead = self.printer.lookup_object('toolhead')
if self.move_transform is None:
self.move_with_transform = self.toolhead.move
@@ -138,8 +139,6 @@ class GCodeParser:
if extruders:
self.extruder = extruders[0]
self.toolhead.set_extruder(self.extruder)
- self.heaters = [ e.get_heater() for e in extruders ]
- self.heaters.append(self.printer.lookup_object('heater_bed', None))
self.fan = self.printer.lookup_object('fan', None)
if self.is_fileinput and self.fd_handle is None:
self.fd_handle = self.reactor.register_fd(self.fd, self.process_data)
@@ -367,13 +366,11 @@ class GCodeParser:
def get_temp(self, eventtime):
# Tn:XXX /YYY B:XXX /YYY
out = []
- for i, heater in enumerate(self.heaters):
- if heater is not None:
- cur, target = heater.get_temp(eventtime)
- name = "B"
- if i < len(self.heaters) - 1:
- name = "T%d" % (i,)
- out.append("%s:%.1f /%.1f" % (name, cur, target))
+ if self.heater is not None:
+ for heater in self.heater.get_all_heaters():
+ if heater is not None:
+ cur, target = heater.get_temp(eventtime)
+ out.append("%s:%.1f /%.1f" % (heater.gcode_id, cur, target))
if not out:
return "T:0"
return " ".join(out)
@@ -389,13 +386,12 @@ class GCodeParser:
temp = self.get_float('S', params, 0.)
heater = None
if is_bed:
- heater = self.heaters[-1]
+ heater = self.heater.get_heater_by_gcode_id('B')
elif 'T' in params:
- index = self.get_int(
- 'T', params, minval=0, maxval=len(self.heaters)-2)
- heater = self.heaters[index]
- elif self.extruder is not None:
- heater = self.extruder.get_heater()
+ index = self.get_int('T', params, minval=0)
+ heater = self.heater.get_heater_by_gcode_id('T%d' % (index,))
+ else:
+ heater = self.heater.get_heater_by_gcode_id('T0')
if heater is None:
if temp > 0.:
self.respond_error("Heater not configured")
@@ -672,9 +668,10 @@ class GCodeParser:
if self.is_printer_ready:
self.toolhead.motor_off()
print_time = self.toolhead.get_last_move_time()
- for heater in self.heaters:
- if heater is not None:
- heater.set_temp(print_time, 0.)
+ if self.heater is not None:
+ for heater in self.heater.get_all_heaters():
+ if heater is not None:
+ heater.set_temp(print_time, 0.)
if self.fan is not None:
self.fan.set_speed(print_time, 0.)
self.toolhead.dwell(0.500)