#!/bin/bash

chip=esp32
flash_size=4MB
start_addr=0x10000

port=""
file=""

Help()
{
  echo "Program ESP32"
  echo "Options:"
  echo "  -p <port>"
  echo "  -f <sketfile>"
}

while getopts "hp:f:" option; do
  case $option in
    p) port=$OPTARG;;
    f) file=$OPTARG;;
    h) Help
       exit;;
   \?) echo "Invalid option!"
       exit;;
  esac
done

if [[ "$port" == "" ]] ; then
  echo "Missing -p options."
  Help
  exit
fi

if [[ "$file" == "" ]] ; then
  echo "Missing -f options."
  Help
  exit
fi

prog="esptool.py"

opts1="--baud 921600 --before default_reset --after hard_reset"
opts2="-z --flash_mode dio --flash_freq 80m --flash_size $flash_size"

cmd="$prog --chip $chip --port $port $opts1 write_flash $opts2 $start_addr $file"

echo ""
echo "Command:"
echo "  $cmd"
read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] ]] || exit 1
echo "Start uploading..."

$cmd
