#!/usr/bin/python3

import sys
import serial
import time

try:
    port=sys.argv[1]
    path=sys.argv[2]
    source=sys.argv[3]
except:
    print("Usage: upload.py [PORT NAME] [PATH ON BADGE] [PATH ON LOCAL MACHINE]")
    sys.exit(1)

inbuf = sys.stdin.buffer

print(f"Writing to path {path} on port {port}, source {source}")

inbuf = open(source,'rb')
ser = serial.Serial(port,timeout=0.02)

def to_board(s):
    s=s+"\r"
    s=s.encode('utf-8')
    while s:
        l = ser.write(s)
        if l < len(s):
            sys.stderr.println("retry remainder")
        s = s[l:]
    print(ser.read(500).decode('utf-8'))

to_board('\r\r')
time.sleep(1)
to_board(f"f=open('{path}','wb')")

while True:
    b = inbuf.read(64)
    if b:
        to_board("f.write({})".format(str(b)))
    else:
        break
to_board("f.close()")




