#!/bin/sh

get_system_firmware()
{
	SYSTEM_FW_ACTIVE=$(cat /proc/sysinfo/releaseVersion)
	log "system version is $SYSTEM_FW_ACTIVE"
}


get_module_firmware()
{
	FW_ACTIVE_MODEM=""	
	FW_ACTIVE_APP=""

	# check modem provider config
	for i in $(seq 0 6); do
		log "getting firmware info of $MODEM ($i)"
		wwan-cmd $CARD 'ATI9'  > /tmp/wwan$CARD-firmware 2>&1
		grep -q "^OK" /tmp/wwan$CARD-firmware && break;
		sleep 5
	done
	FW_ACTIVE_MODEM=$( sed -n 2p < /tmp/wwan$CARD-firmware | awk -F ',' '{ print $1; }' )
	FW_ACTIVE_APP=$( sed -n 2p < /tmp/wwan$CARD-firmware | awk -F ',' '{ print $2; }' )

	printf "\nMODEM\n"
	echo "Firmware version $FW_ACTIVE_MODEM"
	echo "Application Verion $FW_ACTIVE_APP"
}





get_module_firmware_conf()
{
	FW_CONF_MODEM=$( echo $CONF_MODULE_FIRMWARE | awk -F '_' '{ print $1; }' )
	FW_CONF_APP=$( echo $CONF_MODULE_FIRMWARE | awk -F '_' '{ print $2; }' )
	printf "\nCONFIG\n"
	echo "Firmware version $FW_CONF_MODEM"
	echo "Application Verion $FW_CONF_APP"
}

compare_module_firmware ()
{
	if [ "$FW_ACTIVE_MODEM" != "$FW_CONF_MODEM" ];
	then
		echo "Modem"	
		upgrade_module_firmware
	elif [ "$FW_ACTIVE_APP" != "$FW_CONF_APP" ]
	then
		echo "Application"
		upgrade_module_firmware
	else
                printf "\nModem firmware OK\n"   
	fi
}

upgrade_module_firmware ()
{
	printf "\nStarting upgrade process\n"
	FW_MODEM_FILE=$( find $MNTPATH/files/ -iname "*$FW_CONF_MODEM*$FW_CONF_APP*" )
	echo "Upgrading with file $FW_MODEM_FILE"
	cli update firmware "wwan$CARD" "file://$FW_MODEM_FILE"
	REBOOT="YES" 
}


get_system_firmware()
{
	printf "\nSYSTEM\n"
	SYSTEM_FIRMWARE=$(cat /proc/sysinfo/releaseVersion)
	echo "System version is $SYSTEM_FIRMWARE"
	echo "Config version is $CONF_SYSTEM_FIRMWARE"
}


compare_system_firmware()
{
	if [ "$SYSTEM_FIRMWARE" != "$CONF_SYSTEM_FIRMWARE" ]; 
	then
		upgrade_system_firmware
	else
		printf "\nSystem firmware OK\n"
	fi
}

upgrade_system_firmware()
{	printf "\nStarting upgrade process\n"
	FW_SYSTEM_FILE=$( find $MNTPATH/files/ -iname "*$CONF_SYSTEM_FIRMWARE*" )
    echo "Upgrading with file $FW_SYSTEM_FILE"                                            
	cli update software "file://FW_SYSTEM_FILE"                                                 
    REBOOT="YES"
}



#
#	Main Program
#



check_module_firmware()
{
	get_module_firmware
	get_module_firmware_conf
	compare_module_firmware
}

check_system_firmware() 
{
	get_system_firmware                                                                      
	compare_system_firmware
}  




