From 24fbb4b7070b353641d1597198fdfc5356a35d2e Mon Sep 17 00:00:00 2001 From: petrucci4prez Date: Sat, 10 Jun 2017 01:35:46 -0400 Subject: [PATCH] make statemachine a contextmanager class --- main.py | 14 +++----------- stateMachine.py | 16 ++++++++-------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/main.py b/main.py index 848a5f3..797a9b4 100755 --- a/main.py +++ b/main.py @@ -12,11 +12,6 @@ logger = logging.getLogger(__name__) def clean(): GPIO.cleanup() - try: - stateMachine.__del__() - except NameError: - pass - try: logger.info('Terminated root process - PID: %s', os.getpid()) unmountGluster() @@ -35,12 +30,9 @@ if __name__ == '__main__': GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) - stateMachine = StateMachine() - stateMachine.start() - - signal.signal(signal.SIGTERM, sigtermHandler) - - excChildListener() + with StateMachine() as stateMachine: + signal.signal(signal.SIGTERM, sigtermHandler) + excChildListener() except Exception: logger.critical(traceback.format_exc()) diff --git a/stateMachine.py b/stateMachine.py index 5f0522a..98efe30 100644 --- a/stateMachine.py +++ b/stateMachine.py @@ -167,7 +167,7 @@ class StateMachine: self.currentState = getattr(self.states, stateFile['state']) - def start(self): + def __enter__(self): resetUSBDevice('1-1', logger) self.soundLib.start() @@ -203,6 +203,13 @@ class StateMachine: self.currentState.entry() + def __exit__(self, exception_type, exception_value, traceback): + for i in ['LED', 'camera', 'fileDump', 'soundLib', 'secretListener', 'keypadListener']: + try: + getattr(self, i).__del__() + except AttributeError: + pass + def selectState(self, signal): with self._lock: nextState = self.currentState.next(signal) @@ -212,10 +219,3 @@ class StateMachine: self.currentState.entry() stateFile['state'] = self.currentState.name - - def __del__(self): - for i in ['LED', 'camera', 'fileDump', 'soundLib', 'secretListener', 'keypadListener']: - try: - getattr(self, i).__del__() - except AttributeError: - pass