#! /bin/bash

#if [ -z $RODOS_ROOT ]; then
#    source `dirname $0`/print_no_envs_warning
#fi  

#source ${RODOS_MAKES}/stm32f4-set-vars

FLASH_TOOL=openocd
FLASH_TOOL_PATH=/usr/bin
OBJCOPY=arm-none-eabi-objcopy
OBJCOPY_PATH=

ELF_NAME=$1

if [ -x ${FLASH_TOOL_PATH}/${FLASH_TOOL} ]; then
	echo "${FLASH_TOOL}: installed"
    FLASH_TOOL=${FLASH_TOOL_PATH}/${FLASH_TOOL}
else
	# look for flash tool in default path
	command -v ${FLASH_TOOL} >/dev/null 2>&1 || { echo "${FLASH_TOOL}: NOT installed" >&2; exit 1; }
	echo "${FLASH_TOOL}: installed "
    FLASH_TOOL="$(command -v ${FLASH_TOOL})"
fi


if [ -x $OBJCOPY_PATH/$OBJCOPY ]; then
	echo "$OBJCOPY: installed"
    OBJCOPY=${OBJCOPY_PATH}/${OBJCOPY}
else
	# look for objcopy in default path
	command -v ${OBJCOPY} >/dev/null 2>&1 || { echo "${OBJCOPY}: NOT installed" >&2; exit 1; }
	echo "${OBJCOPY}: installed"
	OBJCOPY="$(command -v ${OBJCOPY})"
fi


#if [ -f ./${ARCH}.elf ]; then
#	echo "${ARCH}.elf: OK"
	rm stm32f4.hex &> /dev/null
	$OBJCOPY -O ihex ${ELF_NAME} stm32f4.hex
#else
#	echo "${ARCH}.elf: FAIL"
#	exit 1;
#fi


#if [ -f ./${ELF_NAME}.hex ]; then
#	echo "${ARCH}.hex: OK"
#else
#	echo "${ARCH}.hex: FAIL"
#	exit 1;
#fi



if [ ! -f /etc/udev/rules.d/49-stlinkv1.rules -o ! -f /etc/udev/rules.d/49-stlinkv2.rules ] 
then
	echo "superuser password needed to access USB-Port"

	# mount rule for stlink1
    echo "SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3744\", MODE:=\"0666\", SYMLINK+=\"stlinkv1_%n\"" > 49-stlinkv1.rules

	# mount rule for stlink2
    echo "SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3748\", MODE:=\"0666\", SYMLINK+=\"stlinkv2_%n\"" > 49-stlinkv2.rules

	sudo mv 49-stlinkv1.rules /etc/udev/rules.d/
	sudo mv 49-stlinkv2.rules /etc/udev/rules.d/

	sudo udevadm trigger 
	sudo udevadm control --reload-rules

	sleep 1s 
fi


echo "flashing ..."
${FLASH_TOOL} -f $(dirname "$0")/openocd_flash.cfg