From 54200e33d261b89da3472aba35ca8f598ce9a696 Mon Sep 17 00:00:00 2001 From: Ellis Percival <flyte@failcode.co.uk> Date: Wed, 26 Jul 2017 14:25:12 +0100 Subject: [PATCH] Add cleanup function to modules, called upon exit. #16 --- pi_mqtt_gpio/modules/__init__.py | 6 ++++++ pi_mqtt_gpio/modules/raspberrypi.py | 3 +++ pi_mqtt_gpio/server.py | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/pi_mqtt_gpio/modules/__init__.py b/pi_mqtt_gpio/modules/__init__.py index 6f2892f..2e82893 100644 --- a/pi_mqtt_gpio/modules/__init__.py +++ b/pi_mqtt_gpio/modules/__init__.py @@ -44,3 +44,9 @@ class GenericGPIO(object): @abc.abstractmethod def get_pin(self, pin): pass + + def cleanup(self): + """ + Called when closing the program to handle any cleanup operations. + """ + pass diff --git a/pi_mqtt_gpio/modules/raspberrypi.py b/pi_mqtt_gpio/modules/raspberrypi.py index a1b4174..8f505c9 100644 --- a/pi_mqtt_gpio/modules/raspberrypi.py +++ b/pi_mqtt_gpio/modules/raspberrypi.py @@ -43,3 +43,6 @@ class GPIO(GenericGPIO): def get_pin(self, pin): return self.io.input(pin) + + def cleanup(self): + self.io.cleanup() diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py index f16c68a..1a2ab6c 100644 --- a/pi_mqtt_gpio/server.py +++ b/pi_mqtt_gpio/server.py @@ -488,3 +488,9 @@ if __name__ == "__main__": finally: client.disconnect() client.loop_stop() + for name, gpio in GPIO_MODULES.items(): + try: + gpio.cleanup() + except Exception: + _LOG.exception( + "Unable to execute cleanup routine for module %r:", name) -- GitLab