#!/bin/bash

# Get version.
versionFile='mbtk/include/mbtk_device_info.h'
version=`cat $versionFile | grep -w 'MBTK_DEVICES_REVISION' | cut -d '"' -f 2 `
BUILD_PROJECT=`cat build_version | grep PROJECT | cut -d '=' -f 2`
# CUSTOM_MODEL=`cat build_version | grep CUSTOM_MODEL | cut -d '=' -f 2`
BUILD_PARTITION=`cat build_version | grep PARTITION | cut -d '=' -f 2`
BUILD_CUSTOM=`cat build_version | grep CUSTOM | cut -d '=' -f 2`
SEC_SUPPORT=`cat build_version | grep SEC_SUPPORT | cut -d '=' -f 2`
DEV_INFO_RESET=`cat build_version | grep DEV_INFO_RESET | cut -d '=' -f 2`

if [ -f mbtk/mbtk_version ];then
	PATCH_INDEX=`cat mbtk/mbtk_version | grep PATCH_INDEX | cut -d '=' -f 2`
	if [ -z $PATCH_INDEX ];then
		PATCH_INDEX=0
	fi
	if [ $PATCH_INDEX -lt 10 ];then
		PATCH_INDEX=00"$PATCH_INDEX"
	else
		if [ $PATCH_INDEX -lt 100 ];then
			PATCH_INDEX=0"$PATCH_INDEX"
		fi
	fi
	
	# T108v05.02b01_YX.00
	MBTK_M1901_VERSION=${version#*:= }
	MBTK_M1901_VERSION_1=`echo $MBTK_M1901_VERSION | cut -d '.' -f 1`
	MBTK_M1901_VERSION_2=`echo $MBTK_M1901_VERSION | cut -d '.' -f 2`
	MBTK_M1901_VERSION_3=`echo $MBTK_M1901_VERSION | cut -d '.' -f 3`
	if [[ $MBTK_M1901_VERSION_3 == *_* ]];then		# 有 '_'
		MBTK_M1901_VERSION_3_1=`echo $MBTK_M1901_VERSION_3 | cut -d '_' -f 1`
		MBTK_M1901_VERSION_3_2=`echo $MBTK_M1901_VERSION_3 | cut -d '_' -f 2`
		
		MBTK_M1901_VERSION=$MBTK_M1901_VERSION_1.$MBTK_M1901_VERSION_2."$PATCH_INDEX"_$MBTK_M1901_VERSION_3_2
	else
		MBTK_M1901_VERSION=$MBTK_M1901_VERSION_1.$MBTK_M1901_VERSION_2.$PATCH_INDEX
	fi
else
	MBTK_M1901_VERSION=${version#*:= }
fi

MBTK_M1901_VERSION_DIR=out/$MBTK_M1901_VERSION
MBTK_M1901_MDB_DIR=$MBTK_M1901_VERSION_DIR/MDB

BIN_LIC=-glibc

if [ "$BUILD_PARTITION" == "ab" ];then
	CUSTOM_MODEL="$BUILD_PROJECT"_AB_V2
else
	CUSTOM_MODEL="$BUILD_PROJECT"_A_V2
fi

if [ ! -z $BUILD_CUSTOM ];then
	CUSTOM_MODEL="$CUSTOM_MODEL"_$BUILD_CUSTOM
fi

if [ "$BUILD_PROJECT" == "L901CD-L" ];then
	BUILD_TARGAT=asr1903
	BUILD_FLAG=p501
	if [ "$SEC_SUPPORT" == "Y" ];then
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG"sec"$BIN_LIC"/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_AB_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_OTA_BLF
		fi
	else
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG""$BIN_LIC"/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_OTA_BLF
		fi
	fi
elif [ "$BUILD_PROJECT" == "T108" -o "$BUILD_PROJECT" == "L508_X6" -o "$BUILD_PROJECT" == "T108-2" ];then
	BUILD_TARGAT=asr1806
	BUILD_FLAG=p301
	if [ "$SEC_SUPPORT" == "Y" ];then
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG"sec"$BIN_LIC"/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_AB_MBTK_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_SDTIM_LPDDR2_OTA_BLF
		fi
	else
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG""$BIN_LIC"/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB_MBTK_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_OTA_BLF
		fi
	fi
	
	if [ "$DEV_INFO_RESET" == "Y" ];then
		BIN_BLF="$BIN_BLF"_DEV_INFO
	fi
	echo  $BIN_OTA_BLF
else
	BUILD_TARGAT=asr1803
	BUILD_FLAG=p401
	if [ "$SEC_SUPPORT" == "Y" ];then
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG"sec/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_CMCC_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_CMCC_LPDDR2_AB_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_CMCC_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_TOS_CMCC_LPDDR2_OTA_BLF
		fi
	else
		OUT_DIR=bin/"$BUILD_TARGAT""$BUILD_FLAG""$BIN_LIC"/swd
		if [ "$BUILD_PARTITION" == "ab" ];then
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_CMCC_LPDDR2_AB
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_CMCC_LPDDR2_AB_OTA_BLF
		else
			BIN_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_CMCC_LPDDR2
			BIN_OTA_BLF="$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_CMCC_LPDDR2_OTA_BLF
		fi
	fi
fi



echo "PROJECT = $BUILD_PROJECT"
echo $MBTK_M1901_VERSION : $BUILD_PARTITION : $1
echo "CUSTOM_MODEL=$CUSTOM_MODEL"

function excmd()
{
	echo -e "\e[32mExcmd:\e[0m $@ "  && sleep 0.05
        $@
}

function copy()
{
	excmd cp $OUT_DIR/$1 $MBTK_M1901_VERSION_DIR
}

function mk_dir()
{
	if [ -d $MBTK_M1901_VERSION_DIR ]; then
		excmd rm -rf $MBTK_M1901_VERSION_DIR
	fi
	
	if [ -f $MBTK_M1901_VERSION_DIR.zip ]; then
		excmd rm -f $MBTK_M1901_VERSION_DIR.zip
	fi

	excmd mkdir -p $MBTK_M1901_VERSION_DIR
	excmd mkdir -p $MBTK_M1901_MDB_DIR
	
	if [ "$BUILD_TARGAT" == "asr1903" ];then
		excmd mkdir -p $MBTK_M1901_VERSION_DIR/LAPW
	elif [ "$BUILD_TARGAT" == "asr1806" ];then
		excmd mkdir -p $MBTK_M1901_VERSION_DIR/FACT
	else
		excmd mkdir -p $MBTK_M1901_VERSION_DIR/FLCN
	fi
}

function generate_version_bin()
{
	if [ -d $VERSION_STR_CN ];then
		rm -rf $VERSION_STR_CN
	fi
	if [ -d $VERSION_STR_EU ];then
		rm -rf $VERSION_STR_EU
	fi
	if [ -d $VERSION_STR_LA ];then
		rm -rf $VERSION_STR_LA
	fi
	
	cp -r $MBTK_M1901_VERSION $VERSION_STR_CN
	cd $VERSION_STR_CN
	rm "DEF(全擦).blf"
	rm "EU(全擦).blf"
	rm "LA(全擦).blf"
	cd ..
	zip -q -r $VERSION_STR_CN.zip $VERSION_STR_CN
	
	cp -r $MBTK_M1901_VERSION $VERSION_STR_EU
	cd $VERSION_STR_EU
	rm "DEF(全擦).blf"
	rm "CN(全擦).blf"
	rm "LA(全擦).blf"
	cd ..
	zip -q -r $VERSION_STR_EU.zip $VERSION_STR_EU
	
	cp -r $MBTK_M1901_VERSION $VERSION_STR_LA
	cd $VERSION_STR_LA
	rm "DEF(全擦).blf"
	rm "EU(全擦).blf"
	rm "CN(全擦).blf"
	cd ..
	zip -q -r $VERSION_STR_LA.zip $VERSION_STR_LA
}

function copy_bin_1806()
{
	excmd cp $OUT_DIR/../fota/$BIN_OTA_BLF $MBTK_M1901_VERSION_DIR/"$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_OTA_BLF
	if [ -n "$1" -a "$1" == "mobiletek" ] ;then
		copy  $BIN_BLF.blf
		echo $MBTK_M1901_VERSION | grep DEMO
		if [ $? -eq 0 ];then
			copy  "$BIN_BLF"_MBTK.blf
		fi
	else
		copy  "$BIN_BLF"_MBTK.blf
		#copy  "$BIN_BLF".blf
	fi
	
	# 修改版本号
	# T108v05.02b01_YX.00 or T108v05.02b01_YX.001
	VERSION_STR_1=`echo $MBTK_M1901_VERSION | cut -d '.' -f 1`
	VERSION_STR_2=`echo $MBTK_M1901_VERSION | cut -d '.' -f 2`
	VERSION_STR_3=`echo $MBTK_M1901_VERSION | cut -d '.' -f 3`
	if [[ $VERSION_STR_2 == *_* ]];then		# 有 '_'
		VERSION_STR_2_1=`echo $VERSION_STR_2 | cut -d '_' -f 1`
		VERSION_STR_2_2=`echo $VERSION_STR_2 | cut -d '_' -f 2`
		VERSION_STR_CN=$VERSION_STR_1."$VERSION_STR_2_1"CN_$VERSION_STR_2_2.$VERSION_STR_3
		VERSION_STR_EU=$VERSION_STR_1."$VERSION_STR_2_1"EU_$VERSION_STR_2_2.$VERSION_STR_3
		VERSION_STR_LA=$VERSION_STR_1."$VERSION_STR_2_1"LA_$VERSION_STR_2_2.$VERSION_STR_3
	else
		VERSION_STR_CN=$VERSION_STR_1."$VERSION_STR_2"CN.$VERSION_STR_3
		VERSION_STR_EU=$VERSION_STR_1."$VERSION_STR_2"EU.$VERSION_STR_3
		VERSION_STR_LA=$VERSION_STR_1."$VERSION_STR_2"LA.$VERSION_STR_3
	fi
	
#	echo "CN : $VERSION_STR_CN"
#	echo "EU : $VERSION_STR_EU"
#	echo "LA : $VERSION_STR_LA"
#	echo "DEF : $MBTK_M1901_VERSION"
	
	if [ -n "$1" -a "$1" == "mobiletek" ] ;then
		date_str=`date "+%Y/%m/%d %H:%M:%S"`
		asr_baseline=`cat $OUT_DIR/mversion`
		echo $date_str
		if [ "$BUILD_TARGAT" == "asr1903" ];then
			# 支持4G、5G
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_CN -d $BUILD_PROJECT -e $CUSTOM_MODEL -f cn -g "$date_str" -h 19 -i 12 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_cn.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_EU -d $BUILD_PROJECT -e $CUSTOM_MODEL -f eu -g "$date_str" -h 19 -i 12 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_eu.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_LA -d $BUILD_PROJECT -e $CUSTOM_MODEL -f sa -g "$date_str" -h 19 -i 12 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_la.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $MBTK_M1901_VERSION -d $BUILD_PROJECT -e $CUSTOM_MODEL -g "$date_str" -h 19 -i 12 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_def.bin
		else
			# 支持2G、3G、4G
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_CN -d $BUILD_PROJECT -e $CUSTOM_MODEL -f cn -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_cn.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_EU -d $BUILD_PROJECT -e $CUSTOM_MODEL -f eu -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_eu.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_LA -d $BUILD_PROJECT -e $CUSTOM_MODEL -f sa -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_la.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $MBTK_M1901_VERSION -d $BUILD_PROJECT -e $CUSTOM_MODEL -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_def.bin
		fi
		
		if [ -f $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf ];then
			cp $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf $MBTK_M1901_VERSION_DIR/"CN(全擦)".blf
			cp $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf $MBTK_M1901_VERSION_DIR/"EU(全擦)".blf
			cp $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf $MBTK_M1901_VERSION_DIR/"LA(全擦)".blf
			cp $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf $MBTK_M1901_VERSION_DIR/"DEF(全擦)".blf
			rm $MBTK_M1901_VERSION_DIR/$BIN_BLF.blf
			
			sed -i "s/dev_info.bin/dev_info_cn.bin/" $MBTK_M1901_VERSION_DIR/"CN(全擦)".blf
			sed -i "s/dev_info.bin/dev_info_eu.bin/" $MBTK_M1901_VERSION_DIR/"EU(全擦)".blf
			sed -i "s/dev_info.bin/dev_info_la.bin/" $MBTK_M1901_VERSION_DIR/"LA(全擦)".blf
			sed -i "s/dev_info.bin/dev_info_def.bin/" $MBTK_M1901_VERSION_DIR/"DEF(全擦)".blf
		fi
		if [ -f $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf ];then
			 cp $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf $MBTK_M1901_VERSION_DIR/MBTK_CN.blf
			 cp $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf $MBTK_M1901_VERSION_DIR/MBTK_EU.blf
			 cp $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf $MBTK_M1901_VERSION_DIR/MBTK_LA.blf
			 cp $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf $MBTK_M1901_VERSION_DIR/MBTK_DEF.blf
			 rm $MBTK_M1901_VERSION_DIR/"$BIN_BLF"_MBTK.blf
			 
			 sed -i "s/dev_info.bin/dev_info_cn.bin/" $MBTK_M1901_VERSION_DIR/MBTK_CN.blf
			 sed -i "s/dev_info.bin/dev_info_eu.bin/" $MBTK_M1901_VERSION_DIR/MBTK_EU.blf
			 sed -i "s/dev_info.bin/dev_info_la.bin/" $MBTK_M1901_VERSION_DIR/MBTK_LA.blf
			 sed -i "s/dev_info.bin/dev_info_def.bin/" $MBTK_M1901_VERSION_DIR/MBTK_DEF.blf
		fi
		
		copy "$BUILD_TARGAT"_CP_ReliableData_CMCC.bin
	else
		if [ "$DEV_INFO_RESET" == "Y" ];then
			date_str=`date "+%Y/%m/%d %H:%M:%S"`
			asr_baseline=`cat $OUT_DIR/mversion`
			echo $date_str
			
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_CN -d $BUILD_PROJECT -e $CUSTOM_MODEL -f cn -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_cn.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_EU -d $BUILD_PROJECT -e $CUSTOM_MODEL -f eu -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_eu.bin
			[ -f mbtk/device_info_generate ] && mbtk/device_info_generate -a ab -b $VERSION_STR_LA -d $BUILD_PROJECT -e $CUSTOM_MODEL -f sa -g "$date_str" -h 15 -i 7 -j $asr_baseline -o $MBTK_M1901_VERSION_DIR/dev_info_la.bin
		fi
	fi
	
	copy "$BUILD_TARGAT"_AP_ReliableData.bin
	copy "$BUILD_TARGAT"_TLoader_QSPINAND.bin
	if [ "$BUILD_TARGAT" == "asr1903" ];then
		excmd cp $OUT_DIR/LAPW/hotfix.bin $MBTK_M1901_VERSION_DIR/LAPW/
		copy tim_lapw_qspinand.bin
		copy tim_lapw_qspinand2.bin
		copy "$BUILD_TARGAT"_TUpdater_QSPINAND.bin
		copy "$BUILD_TARGAT"_BX2.bin
	elif [ "$BUILD_TARGAT" == "asr1806" ];then
		excmd cp $OUT_DIR/FACT/hotfix.bin $MBTK_M1901_VERSION_DIR/FACT/
		copy tim_fact_qspinand.bin
		copy tim_fact_qspinand2.bin
		copy "$BUILD_TARGAT"_TUpdater_QSPINAND.bin
		copy "$BUILD_TARGAT"_MSA.bin
	else
		excmd cp $OUT_DIR/FLCN/hotfix.bin $MBTK_M1901_VERSION_DIR/FLCN/
		copy "$BUILD_TARGAT"_MSA.bin
	fi
	copy "$BUILD_TARGAT"_TLoader_QSPINAND_ProductBuild.bin

	copy "$BUILD_TARGAT"_ARBEL.bin
	copy "$BUILD_TARGAT"_RFPLUGIN.bin
	copy openwrt-mmp-"$BUILD_TARGAT"-u-boot.bin
	copy openwrt-mmp-"$BUILD_TARGAT"-zImage
	copy openwrt-mmp-"$BUILD_TARGAT"-root.squashfs
	copy oemapp.ubi
	copy DTim.Primary
	copy DTim.PPsetting
	copy DTim.PPsetting2
	copy DTim.Recovery
	copy mversion
	copy SWDownloader.exe
	copy swdl_linux
	if [ "$SEC_SUPPORT" == "Y" ];then
		copy "$BUILD_TARGAT"_tos.bin
		copy DDR_*
		copy DKB_timheader.bin
	fi
	if [ -f marvell/swd/FALCON/logo.img ];then
		cp marvell/swd/FALCON/logo.img $MBTK_M1901_VERSION_DIR
	fi

	excmd cp $OUT_DIR/Boerne_DIAG.mdb.txt $MBTK_M1901_MDB_DIR/AP_MDB.txt
	excmd cp $OUT_DIR/MDB.txt $MBTK_M1901_MDB_DIR/CP_MDB.txt
#	excmd cp $OUT_DIR/vmlinux.bin $MBTK_M1901_MDB_DIR/vmlinux.bin
	
	CUR_PWD=`pwd`
	cd out
	
	# 生成各地区的固件
	if [ -n "$1" -a "$1" == "mobiletek" ] ;then
		generate_version_bin
	else
		if [ "$DEV_INFO_RESET" == "Y" ];then
			cp $MBTK_M1901_VERSION/$BIN_BLF.blf $MBTK_M1901_VERSION/"$BIN_BLF"_CN.blf
			sed -i "s/dev_info.bin/dev_info_cn.bin/" $MBTK_M1901_VERSION/"$BIN_BLF"_CN.blf
			 
			cp $MBTK_M1901_VERSION/$BIN_BLF.blf $MBTK_M1901_VERSION/"$BIN_BLF"_EU.blf
			sed -i "s/dev_info.bin/dev_info_eu.bin/" $MBTK_M1901_VERSION/"$BIN_BLF"_EU.blf
			
			cp $MBTK_M1901_VERSION/$BIN_BLF.blf $MBTK_M1901_VERSION/"$BIN_BLF"_LA.blf
			sed -i "s/dev_info.bin/dev_info_la.bin/" $MBTK_M1901_VERSION/"$BIN_BLF"_LA.blf
			
			rm -f $MBTK_M1901_VERSION/$BIN_BLF.blf
		fi
	fi
	if [ "$SEC_SUPPORT" == "N" ];then
		sed -i 's/Number_of_Images = 15/Number_of_Images = 14/g' ../$MBTK_M1901_VERSION_DIR/"$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_OTA_BLF
		sed -i 's/23_Image_Enable = 0/23_Image_Enable = 1/g' ../$MBTK_M1901_VERSION_DIR/"$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB_MBTK.blf
	else
		sed -i 's/Number_of_Images = 17/Number_of_Images = 16/g' ../$MBTK_M1901_VERSION_DIR/"$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_OTA_BLF
		sed -i 's/25_Image_Enable = 0/25_Image_Enable = 1/g' ../$MBTK_M1901_VERSION_DIR/"$BUILD_TARGAT"_"$BUILD_FLAG"_QSPINAND_Trusted_SDTIM_LPDDR2_AB_MBTK.blf
	fi	
	zip -q -r $MBTK_M1901_VERSION.zip $MBTK_M1901_VERSION
	cd $CUR_PWD
}

mk_dir
if [ -n "$1" ];then
	copy_bin_1806 $1
else
	copy_bin_1806
fi
