#! /usr/bin/env python3
import argparse
import sys
import logging
import serial

logger = logging.getLogger(__name__)


def main() -> int:
    # Handle program arguments
    ap = argparse.ArgumentParser(
        prog="kxpwr", description="Set the TX power on a KX2"
    )
    ap.add_argument("watts", help="Power level in watts", type=int)
    ap.add_argument("--retune", help="Re-tunes the antenna after setting power", action="store_true")
    ap.add_argument("--device", "-d", help="Serial device", default="/dev/ttyUSB0")
    ap.add_argument("--baud", "-b", help="Serial baud rate", default=38400, type=int)
    ap.add_argument(
        "-v", "--verbose", help="Enable verbose logging", action="store_true"
    )
    args = ap.parse_args()

    # Configure logging
    logging.basicConfig(
        level=logging.DEBUG if args.verbose else logging.INFO,
        format="%(levelname)s:	%(message)s",
    )

    # Connect to the radio
    logger.debug(f"Connecting to radio: {args.device}")
    serial_conn = serial.Serial(args.device, args.baud)
    
    # Set the power level
    cmd = "PC{:0>3};".format(args.watts)
    logger.debug(f"Sending command: {cmd}")
    serial_conn.write(cmd.encode("ascii"))
    
    # Re-tune the antenna if needed 
    if args.retune:
        cmd = "SWT20;"
        logger.warning("Re-tuning antenna")
        logger.debug(f"Sending command: {cmd}")
        serial_conn.write(cmd.encode("ascii"))


    return 0


if __name__ == "__main__":
    sys.exit(main())