From f6c9150349d3ffb364a990132a16afa64c890b2e Mon Sep 17 00:00:00 2001 From: john-- Date: Wed, 2 Jan 2019 17:44:02 -0500 Subject: 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 --- klippy/gcode.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'klippy/gcode.py') 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) -- cgit v1.2.3-70-g09d2