#!/usr/bin/env python3 """ Starts the Bluetooth server for the drawing machine. Taken from the multiserver example in the nOBEX git repo. """ import os import sys import signal import traceback from threading import Thread from opp import OPPServer def thread_serve(serv_class, arg): t = Thread(target=serve, args=(serv_class, arg), daemon=True) t.start() return t def serve(serv_class, *args, **kwargs): server = serv_class(*args, **kwargs) socket = server.start_service() while True: try: server.serve(socket) except: traceback.print_exc() def signal_handler(signal, frame): print() # newline to move ^C onto its own line on display sys.exit(0) def main(): opp_conf = "./received" signal.signal(signal.SIGINT, signal_handler) # obexd conflicts with our own OBEX servers os.system("killall obexd") t = thread_serve(OPPServer, opp_conf) # wait for completion (never) t.join() return 0 if __name__ == "__main__": sys.exit(main())