diff --git a/joycond-cemuhook.py b/joycond-cemuhook.py index ec5e598..964f58e 100755 --- a/joycond-cemuhook.py +++ b/joycond-cemuhook.py @@ -1,5 +1,6 @@ #! /usr/bin/env python3 +import signal import sys import evdev from threading import Thread @@ -457,6 +458,8 @@ def handle_devices(self): print("Looking for Nintendo Switch controllers...") + exception = None + while True: try: evdev_devices = [evdev.InputDevice(path) for path in evdev.list_devices()] @@ -496,8 +499,9 @@ def handle_devices(self): self.print_slots() time.sleep(0.2) # sleep for 0.2 seconds - except: - pass + + except Exception as e: + exception = e def print_slots(self): slots_print = [] @@ -533,6 +537,22 @@ def start(self): self.device_thread.join() + def stop(self, sig=None, frame=None, err=None): + if sig is not None: + print("Stopping server") + self.report_clean(self) + self.disconnected = True + asyncio.get_event_loop().close() + return err + + + server = UDPServer('127.0.0.1', 26760) -server.start() + +# Handle CTRL+C and systemctl stop default signal +signal.signal(signal.SIGINT, server.stop) +signal.signal(signal.SIGTERM, server.stop) + + +sys.exit(server.start())