#!/bin/bash
source ./utils.sh
source ./path.sh

export SEC_SOC_NUM=$1
export EMBUILD_MODE=$2

export EM_PATH=$(pwd)
export EM_SEC_APP=$EM_PATH/swd/Teegris
export EM_TA_NAME=00000000-0000-0000-0000-656e676d6f64
export EM_TA_OUTPUT_PATH=$EM_PATH/Bin/TA/Teegris/dist/obj/

export EM_TA_LOCAL=TRUE

show_invalid_param()
{
	echo "------------------------------------------------------------------"
	echo "Please check parameter, Your args (Chipset:${SEC_SOC_NUM}) (EmBuildMode:${EMBUILD_MODE})"
	echo "[Usage] ./build_Teegris.sh [Chipset] [EmBuildMode]"
	echo "[Chipset Support] 3830, 9610, 9630, 9820, 9830 (3830:A21S, 9610:a50, 9630:A51, 9820:beyond, 9830:hb, 2100:m)"
	echo "                  9810 (9810:T575), 7904(7885)"
	echo "[EmBuildMode Support] test"
	echo "------------------------------------------------------------------"
}

validate_params()
{
	# Check SDK version parameter
	if [ "$SEC_SOC_NUM" ]; then
		printGreen "Engineering Mode Teegris TA build for $SEC_SOC_NUM"
		case "$SEC_SOC_NUM" in
			9610|9820|3830|9630|9830|9810|7904|2100)
			;;
			*)
				show_invalid_param
				exit
				;;
		esac
	else
		show_invalid_param
		exit
	fi

	# Check build mode parameter
	if [ "$EMBUILD_MODE" ]; then
		printGreen "Engineering Mode Teegris TA build as $EMBUILD_MODE mode"
		case "$EMBUILD_MODE" in
			test|clean)
				;;
			*)
				show_invalid_param
				exit
				;;
		esac
	else
		show_invalid_param
		exit
	fi
}

do_blowfish_build()
{
	case "$SEC_SOC_NUM" in
		3830)
			SIGNMODEL=TEEGRIS_EXYNOS3830_SAMSUNG_TA
			;;
		9610)
			SIGNMODEL=TEEGRIS_EXYNOS9610_SAMSUNG_TA
		;;
		9820)
			SIGNMODEL=TEEGRIS_EXYNOS9820_SAMSUNG_TA
		;;
		9630)
			SIGNMODEL=TEEGRIS_EXYNOS9630_SAMSUNG_TA
		;;
		9830)
			SIGNMODEL=TEEGRIS_EXYNOS9830_SAMSUNG_TA
		;;
		9810)
			SIGNMODEL=TEEGRIS_EXYNOS9810_SAMSUNG_TA
		;;
		7904)
			SIGNMODEL=TEEGRIS_EXYNOS7904_SAMSUNG_TA
		;;
		2100)
			SIGNMODEL=TEEGRIS_EXYNOS2100_SAMSUNG_TA
		;;
		*)
		show_invalid_param
		exit
		;;
	esac

	export TEEGRIS_BUILD_MODEL=exynos$SEC_SOC_NUM

	cd $EM_SEC_APP

	case "$EMBUILD_MODE" in
		test)
			make
			;;
		clean)
			clear_obj
			make clean
			;;
	esac
	check_return_code $? "do_blowfish_build"
}

push_to_device()
{
	if [ "$EMBUILD_MODE" = "test" ]
	then

		echo ""
		adb start-server

		RET="$(adb get-state)"
		if [ "$RET" = "device" ]; then
			print_success "device is connected. push engineering mode binary to device."
			adb remount
			adb push $EM_TA_OUTPUT_PATH/$EM_TA_NAME /system/tee/
			adb shell ls -al /system/tee/$EM_TA_NAME

			adb push $EM_TA_OUTPUT_PATH/$EM_TA_NAME /vendor/tee/
			adb shell ls -al /vendor/tee/$EM_TA_NAME
		else
			print_warning "device isn't connected. skip engineeringmode binary push"
		fi
	fi
}

clear_obj()
{
	find $EM_PATH/../ -name "*.o" -exec rm {} \;
}

# Build Engineering Mode TA
validate_params
do_blowfish_build
push_to_device
clear_obj
