import logging from ROAR.utilities_module.utilities import get_ip import qrcode import cv2 import numpy as np import socket from ROAR.utilities_module.utilities import get_ip import socket def showIPUntilAck(): img = np.array(qrcode.make(f"{get_ip()}").convert('RGB')) success = False addr = None s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: s.bind((get_ip(), 8008)) s.settimeout(1) while True: try: s.listen() cv2.imshow("Scan this code to connect to phone", img) k = cv2.waitKey(1) & 0xff if k == ord('q') or k == 27: s.close() break conn, addr = s.accept() addr = addr[0] if conn: s.close() success = True break except socket.timeout as e: logging.info(f"Please tap on the ip address to scan QR code. ({get_ip()}:{8008}). {e}") except Exception as e: logging.error(f"Unable to bind socket: {e}") finally: s.close() cv2.destroyWindow("Scan this code to connect to phone") return success, addr print(showIPUntilAck())