import time
import sys
import serial

"""
ButtonPad Time Sync Script

Sends current PC date/time over serial to Arduino.
Two lines per cycle: 
  - date: dd-mm-YYYY 
  - time: HH:MM:SS
"""

def main(port: str, baud: int = 9600, interval: float = 1.0):
    try:
        ser = serial.Serial(port, baud, timeout=1)
        print(f"Opened serial port {port} at {baud} baud.")
    except serial.SerialException as e:
        print(f"Error opening {port}: {e}")
        sys.exit(1)

    try:
        while True:
            now = time.localtime()
            date_str = time.strftime("%d-%m-%Y", now)
            time_str = time.strftime("%H:%M:%S", now)
            ser.write((date_str + "\n").encode())
            ser.write((time_str + "\n").encode())
            time.sleep(interval)
    except KeyboardInterrupt:
        print("\nExiting time sync script.")
    finally:
        ser.close()

if __name__ == '__main__':
    # Default port — change with yours arduino port
    DEFAULT_PORT = "COM8"        # Windows
    # DEFAULT_PORT = "/dev/ttyACM0"  # Linux/macOS

    port = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_PORT
    baud = int(sys.argv[2]) if len(sys.argv) >= 3 else 9600
    interval = float(sys.argv[3]) if len(sys.argv) >= 4 else 1.0

    print(f"Using port {port}, baud {baud}, interval {interval}s")
    main(port, baud, interval)
