#!/usr/bin/python3
#
# evmUploader.py - uploads files over a serial line with some delays and
#                  hardware handshake DSR-DTR. Adds the '>' prefix and 
#                  '<' postfix.
#
# fjkraan@electrickery.nl, 2025-11-06

import sys
import serial
import time

port = '/dev/ttyACM0'  # default port
baud = 9600           # default BAUD rate

if len(sys.argv) == 1:
   print("Usage: python uploader.py <hexFile> [<ttyPort>]")
   exit()
if len(sys.argv) > 1:
    hexFile = sys.argv[1]
if len(sys.argv) > 2:
    port = sys.argv[2]
if len(sys.argv) > 3:
    baud = sys.argv[3]

LF = "\n"
CR = "\r"
sendDelay = 0.001
time.sleep(sendDelay)

ser = serial.Serial(port, baud, timeout=0, rtscts=True)  # open serial port

print("Uploading " + hexFile + " to " + port)

file = open(hexFile, 'r')
lines = file.readlines()
file.close()

time.sleep(sendDelay)

ser.write(str.encode('>'))

for line in lines:
    lineStrip = line.strip()
    if (lineStrip):
        for char in lineStrip:
            ser.write(str.encode(char))
            time.sleep(sendDelay)
        ser.write(str.encode(CR + LF))
        
        print(CR + lineStrip[0:4],end='')    # update current line number on console

ser.write(str.encode('<'))
ser.close()

print()
print("Done.")
