aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--klippy/heater.py5
-rw-r--r--klippy/klippy.py7
-rw-r--r--klippy/toolhead.py3
3 files changed, 10 insertions, 5 deletions
diff --git a/klippy/heater.py b/klippy/heater.py
index 827ba324..a7522368 100644
--- a/klippy/heater.py
+++ b/klippy/heater.py
@@ -26,7 +26,7 @@ class PrinterHeater:
self.printer = printer
self.config = config
self.mcu_pwm = self.mcu_adc = None
- self.thermistor_c = Thermistors.get(config.get('thermistor_type'))
+ self.thermistor_c = config.getchoice('thermistor_type', Thermistors)
self.pullup_r = config.getfloat('pullup_resistor', 4700.)
self.min_extrude_temp = config.getfloat('min_extrude_temp', 170.)
self.can_extrude = (self.min_extrude_temp <= 0.)
@@ -48,9 +48,8 @@ class PrinterHeater:
self.mcu_adc.set_minmax(
SAMPLE_TIME, SAMPLE_COUNT, minval=min_adc, maxval=max_adc)
self.mcu_adc.set_adc_callback(REPORT_TIME, self.adc_callback)
- control_algo = self.config.get('control', 'watermark')
algos = {'watermark': ControlBangBang, 'pid': ControlPID}
- self.control = algos[control_algo](self, self.config)
+ self.control = self.config.getchoice('control', algos)(self, self.config)
if self.printer.mcu.is_fileoutput():
self.can_extrude = True
def set_pwm(self, read_time, value):
diff --git a/klippy/klippy.py b/klippy/klippy.py
index bf63d01d..f4cdbb41 100644
--- a/klippy/klippy.py
+++ b/klippy/klippy.py
@@ -61,6 +61,13 @@ class ConfigWrapper:
def getboolean(self, option, default=sentinel):
return self.get_wrapper(
self.printer.fileconfig.getboolean, option, default)
+ def getchoice(self, option, choices, default=sentinel):
+ c = self.get(option, default)
+ if c not in choices:
+ raise self.error(
+ "Option '%s' in section '%s' is not a valid choice" % (
+ option, self.section))
+ return choices[c]
def getsection(self, section):
return ConfigWrapper(self.printer, section)
diff --git a/klippy/toolhead.py b/klippy/toolhead.py
index 5248a589..681ebe73 100644
--- a/klippy/toolhead.py
+++ b/klippy/toolhead.py
@@ -161,8 +161,7 @@ class ToolHead:
self.extruder = printer.objects.get('extruder')
kintypes = {'cartesian': cartesian.CartKinematics,
'delta': delta.DeltaKinematics}
- kin = config.get('kinematics', 'cartesian')
- self.kin = kintypes[kin](printer, config)
+ self.kin = config.getchoice('kinematics', kintypes)(printer, config)
self.max_speed, self.max_accel = self.kin.get_max_speed()
self.junction_deviation = config.getfloat('junction_deviation', 0.02)
self.move_queue = MoveQueue()