From fa4252905dfee5df95e00960dbb06304af7c7fa8 Mon Sep 17 00:00:00 2001 From: Lonja Selter Date: Thu, 28 Mar 2019 12:28:07 +0000 Subject: [PATCH] try-except for creating pwm instances --- octoprint_enclosure/__init__.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/octoprint_enclosure/__init__.py b/octoprint_enclosure/__init__.py index dfcd524..39c81cd 100644 --- a/octoprint_enclosure/__init__.py +++ b/octoprint_enclosure/__init__.py @@ -916,6 +916,7 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, self.log_error(ex) def clear_channel(self, channel): + self._logging.debug("Clearing channel: %s", channel) try: GPIO.cleanup(self.to_int(channel)) except Exception as ex: @@ -942,16 +943,22 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, GPIO.setup(pin, GPIO.OUT, initial=initial_value) for gpio_out_pwm in list(filter(lambda item: item['output_type'] == 'pwm', self.rpi_outputs)): pin = self.to_int(gpio_out_pwm['gpio_pin']) - self._logger.info( - "Setting GPIO pin %s as PWM", pin) + self._logger.info("Setting GPIO pin %s as PWM", pin) + for pwm in (pwm_dict for pwm_dict in self.pwm_intances if pin in pwm_dict): self.pwm_intances.remove(pwm) self.clear_channel(pin) - GPIO.setup(pin, GPIO.OUT) - pwm_instance = GPIO.PWM(pin, self.to_int( - gpio_out_pwm['pwm_frequency'])) - pwm_instance.start(0) - self.pwm_intances.append({pin: pwm_instance}) + try: + GPIO.setup(pin, GPIO.OUT) + pwm_instance = GPIO.PWM(pin, self.to_int( + gpio_out_pwm['pwm_frequency'])) + pwm_instance.start(0) + self.pwm_intances.append({pin: pwm_instance}) + except Exception as e: + self._logger.error(e.message) + self._logger.error(e.args) + self._logger.error(e) + for gpio_out_neopixel in list(filter(lambda item: item['output_type'] == 'neopixel_direct', self.rpi_outputs)): pin = self.to_int(gpio_out_neopixel['gpio_pin']) self.clear_channel(pin)