diff options
Diffstat (limited to 'klippy/extras/input_shaper.py')
-rw-r--r-- | klippy/extras/input_shaper.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/klippy/extras/input_shaper.py b/klippy/extras/input_shaper.py index 35e7ff63..ceca89f8 100644 --- a/klippy/extras/input_shaper.py +++ b/klippy/extras/input_shaper.py @@ -25,14 +25,12 @@ class InputShaper: , 'ei': ffi_lib.INPUT_SHAPER_EI , '2hump_ei': ffi_lib.INPUT_SHAPER_2HUMP_EI , '3hump_ei': ffi_lib.INPUT_SHAPER_3HUMP_EI} - shaper_type = config.getchoice('shaper_type', self.shapers, None) - if shaper_type is None: - self.shaper_type_x = config.getchoice( - 'shaper_type_x', self.shapers, 'mzv') - self.shaper_type_y = config.getchoice( - 'shaper_type_y', self.shapers, 'mzv') - else: - self.shaper_type_x = self.shaper_type_y = shaper_type + shaper_type = config.get('shaper_type', 'mzv') + self.shaper_type_x = config.getchoice( + 'shaper_type_x', self.shapers, shaper_type) + self.shaper_type_y = config.getchoice( + 'shaper_type_y', self.shapers, shaper_type) + self.saved_shaper_freq_x = self.saved_shaper_freq_y = 0. self.stepper_kinematics = [] self.orig_stepper_kinematics = [] # Register gcode commands @@ -86,6 +84,24 @@ class InputShaper: , shaper_type_x, shaper_type_y , shaper_freq_x, shaper_freq_y , damping_ratio_x, damping_ratio_y) + def disable_shaping(self): + if (self.saved_shaper_freq_x or self.saved_shaper_freq_y) and not ( + self.shaper_freq_x or self.shaper_freq_y): + # Input shaper is already disabled + return + self.saved_shaper_freq_x = self.shaper_freq_x + self.saved_shaper_freq_y = self.shaper_freq_y + self._set_input_shaper(self.shaper_type_x, self.shaper_type_y, 0., 0., + self.damping_ratio_x, self.damping_ratio_y) + def enable_shaping(self): + saved = self.saved_shaper_freq_x or self.saved_shaper_freq_y + if saved: + self._set_input_shaper(self.shaper_type_x, self.shaper_type_y, + self.saved_shaper_freq_x, + self.saved_shaper_freq_y, + self.damping_ratio_x, self.damping_ratio_y) + self.saved_shaper_freq_x = self.saved_shaper_freq_y = 0. + return saved cmd_SET_INPUT_SHAPER_help = "Set cartesian parameters for input shaper" def cmd_SET_INPUT_SHAPER(self, gcmd): damping_ratio_x = gcmd.get_float( |