#!/bin/sh

printf "Hold down the HackRF's DFU button (the button closest to the antenna jack)\n"
printf "then plug the HackRF into a USB port on your computer.\n\n"
printf "After the HackRF is plugged in, you may release the DFU button.\n"
printf "Press any key to continue or ^c to abort\n"
read

for i in /usr/share/hackrf/hackrf_one_usb.dfu /usr/share/hackrf/hackrf_one_usb_ram.dfu hackrf_one_usb.dfu; do
  if [ -r "${i}" ]; then
    ram_firmware="${i}"
    break
  fi
done

if [ -n "${ram_firmware}" ]; then
  printf "\nFound firmware: ${ram_firmware}\n"
  printf "Flashing...\n"
else
  printf "Unable to find firmware to flash, please have hackrf_one_usb.dfu\n"
  printf "in current directory or /usr/share/hackrf/\n"
  exit 1
fi

for i in /usr/share/hackrf/portapack-h1-firmware.bin portapack-h1-firmware.bin; do
  if [ -r "${i}" ]; then
    rom_firmware="${i}"
    break
  fi
done

if [ -n "${rom_firmware}" ]; then
  printf "\nFound firmware: ${rom_firmware}\n"
  printf "Flashing...\n"
else
  printf "Unable to find firmware to flash, please have portapack-h1-firmware.bin\n"
  printf "in current directory or /usr/share/hackrf/\n"
  exit 1
fi

dfu-util --device 1fc9:000c --download "${ram_firmware}" --reset
sleep 2s
hackrf_spiflash -w "${rom_firmware}"
