From cd7a8e4b462e86d8691a027dd1e73a0534ae242e Mon Sep 17 00:00:00 2001 From: Kavish Devar Date: Sat, 28 Sep 2024 15:13:44 +0530 Subject: [PATCH] prompt for anc mode in examples/daemon/set-anc.py --- examples/daemon/set-anc.py | 39 +++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/examples/daemon/set-anc.py b/examples/daemon/set-anc.py index b2bdf3f..00dc6a7 100644 --- a/examples/daemon/set-anc.py +++ b/examples/daemon/set-anc.py @@ -1,5 +1,17 @@ import socket +import argparse from aln import enums +import logging + +# Configure logging +logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + +# Colorful logging +logging.addLevelName(logging.DEBUG, "\033[1;34m%s\033[1;0m" % logging.getLevelName(logging.DEBUG)) +logging.addLevelName(logging.INFO, "\033[1;32m%s\033[1;0m" % logging.getLevelName(logging.INFO)) +logging.addLevelName(logging.WARNING, "\033[1;33m%s\033[1;0m" % logging.getLevelName(logging.WARNING)) +logging.addLevelName(logging.ERROR, "\033[1;31m%s\033[1;0m" % logging.getLevelName(logging.ERROR)) +logging.addLevelName(logging.CRITICAL, "\033[1;41m%s\033[1;0m" % logging.getLevelName(logging.CRITICAL)) SOCKET_PATH = "/tmp/airpods_daemon.sock" @@ -7,19 +19,36 @@ def send_command(command): """Send a command to the daemon via UNIX domain socket.""" try: # Create a socket connection to the daemon + logging.info("Connecting to daemon...") client_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) client_socket.connect(SOCKET_PATH) + logging.info("Connected to daemon") # Send the command - client_socket.send(command) - print(f"Sent command: {command}") + client_socket.sendall(command) + logging.info(f"Sent command: {command}") # Close the connection client_socket.close() + logging.info("Socket closed") except Exception as e: - print(f"Error communicating with daemon: {e}") + logging.error(f"Error communicating with daemon: {e}") + +def parse_arguments(): + parser = argparse.ArgumentParser(description="Set AirPods ANC mode.") + parser.add_argument("mode", choices=["off", "on", "transparency", "adaptive", "1", "2", "3", "4"], help="ANC mode to set") + return parser.parse_args() if __name__ == "__main__": - # Convert the command (enum) to bytes and send it to the daemon - command = enums.SET_NOISE_CANCELLATION_OFF + args = parse_arguments() + + if args.mode == "off" or args.mode == "1": + command = enums.SET_NOISE_CANCELLATION_OFF + elif args.mode == "on" or args.mode == "2": + command = enums.SET_NOISE_CANCELLATION_ON + elif args.mode == "transparency" or args.mode == "3": + command = enums.SET_NOISE_CANCELLATION_TRANSPARENCY + elif args.mode == "adaptive" or args.mode == "4": + command = enums.SET_NOISE_CANCELLATION_ADAPTIVE + send_command(command)