#!/bin/bash

# only run if there is an ADC board fitted
[ -e "/run/gsl-eeprom/adc1" ] || exit 0

echo " * Checking whether to upgrade calibration DAC firmware..."
WANT_UPDATE="0"
UPDATER="/usr/sbin/das-caldac-updater"

AVAIL_VER="0"
for FILE in /lib/firmware/das-caldac/application.*
do
	[ -r "${FILE}" ] || continue
	FILE_VER="${FILE/*.}"
	if [ "${FILE_VER}" -gt "${AVAIL_VER}" ]
	then
		AVAIL_VER="${FILE_VER}"
		UPDATE_FILE="${FILE}"
	fi
done

CURRENT_VER="`${UPDATER} --check 2> /dev/null`"
if [ "$?" -ne 0 -o -z "${CURRENT_VER}" ]
then
	echo " * Error talking to calibration DAC: attempting firmware update..."
	WANT_UPDATE="1"
else
	if [ "${AVAIL_VER}" -gt "${CURRENT_VER}" ]
	then
		echo " * Newer version ${AVAIL_VER} available (current version: ${CURRENT_VER})"
		WANT_UPDATE="1"
	elif [ "${AVAIL_VER}" -eq "${CURRENT_VER}" ]
	then
		echo " * Installed version ${CURRENT_VER} is latest available."
	else
		echo " * Installed version ${CURRENT_VER} newer than available version ${AVAIL_VER} ?"
	fi
fi

if [ "${WANT_UPDATE}" -ne 0 ]
then
	${UPDATER} "${UPDATE_FILE}"
fi
