#!/usr/bin/env bash
#
# Copyright (c) 2019-2024, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
source "$ci_root/run_config/tc_rse_utils.sh"

fetch_tf_resource() {
	image="kernel" type="tc-kernel" get_boot_image
	image="initrd" type="tc-ramdisk" get_boot_image

	url="$tc_prebuilts/tc_fitimage.bin" saveas="tc_fitimage.bin" fetch_file
	archive_file "tc_fitimage.bin"

	# Use SCP binary from SCP build if it exists, or fetch pre-built ones.
	if [ ! -f "$archive/scp_rom.bin" ]; then
		# Pick the appropriate binary based on target platform variant
		url="$scp_mcp_downloads/totalcompute/tc$plat_variant/platform_variant_0/release/tc$plat_variant-bl1.bin" saveas="scp_rom.bin" fetch_file
		archive_file "scp_rom.bin"
	fi

	# RSE is applicable to TC2
	if [ $plat_variant -eq 2 ]; then

	    # Hold RSE terminal_uart_ap
	    uart="1" port="5003" file="hold_uart.exp" track_expect

	    get_rse_prov_bins

            # sign AP bl1
	    sign_image bl1.bin $ap_bl1_flash_load_addr $ap_bl1_flash_size

	    # Update FIP with pre-built RSE binaries and signed AP BL1 to create host flash fip image
	    update_fip

            # Create GPT image
	    gen_gpt_bin $archive/host_flash_fip.bin 12582912 16
	fi
}

pre_tf_build() {
	local qcbor_release_archive="qcbor-v1_2.tar.gz"
	local qcbor_folder="qcbor"

	if [ "$(get_tf_opt DICE_PROTECTION_ENVIRONMENT)" = 1 ]; then
		pushd "$workspace"

		if [ ! -d "qcbor" ]; then
			saveas="${qcbor_release_archive}" \
				url="https://github.com/laurencelundblade/QCBOR/archive/refs/tags/v1.2.tar.gz" \
				fetch_file
			mkdir $qcbor_folder
			tar -xzf "${qcbor_release_archive}" --directory=$qcbor_folder --strip-component=1
		fi

		echo "Set QCBOR_DIR to $workspace/qcbor"
		set_hook_var "QCBOR_DIR" "$workspace/qcbor"

		popd "$workspace"
	fi
}

generate_lava_job_template() {
	# Hold scp terminal_s0
	uart="0" port="5002" file="hold_uart.exp" track_expect
	uart="2" port="5000" file="tc-fitimage-busybox.exp" set_primary="1" \
                 timeout="1200" track_expect

	set_uart_port "${archive:?}" 1 5003
	set_uart_port "${archive:?}" 3 5001

	payload_type="linux" gen_yaml_template
}
