#!/bin/bash

SCRIPT_PATH=$(dirname $0)

if [ -e ${SCRIPT_PATH}/images/anti_version.txt ]; then
CURRENT_ANTI_VER=`cat ${SCRIPT_PATH}/images/anti_version.txt`
fi
if [ -z "$CURRENT_ANTI_VER" ]; then CURRENT_ANTI_VER=0; fi

ver=`fastboot $* getvar anti 2>&1 | grep -oP "anti: \K[0-9]+"`
if [ -z "$ver" ]; then ver=0; fi

if [ $ver -gt $CURRENT_ANTI_VER ]; then
  echo "Current device antirollback version is greater than this pakcage"
  exit 1
fi

# Start flash image
fastboot $* getvar product 2>&1 | grep "dijun"
if [ $? -ne 0 ] ; then echo "Missmatching image and device"; exit 1; fi

handle_error(){
    echo $@
    exit 2
}

fastboot $* getvar crc 2>&1 | grep "^crc: 1"
if [ $? -eq 0 ]; then
  fastboot $* flash crclist       ${SCRIPT_PATH}/images/crclist.txt       || handle_error flash crclist error
  fastboot $* flash sparsecrclist ${SCRIPT_PATH}/images/sparsecrclist.txt || handle_error flash sparsecrclist error
fi

fastboot $* erase boot_ab || handle_error erase boot_ab error

# secboot begin
fastboot $* flash xloader_ab       ${SCRIPT_PATH}/images/sec_xloader.img   || handle_error flash xloader error
fastboot $* flash xrse_ab          ${SCRIPT_PATH}/images/sec_xrse_fw.img   || handle_error flash xrse error
# secboot end
# non-secboot begin
#fastboot $* flash xloader_ab       ${SCRIPT_PATH}/images/sec_xloader_xr.img   || handle_error flash xloader error
#fastboot $* flash xrse_ab          ${SCRIPT_PATH}/images/sec_xrse_fw_xr.img   || handle_error flash xrse error
# non-secboot end
fastboot $* flash bl2_ab           ${SCRIPT_PATH}/images/sec_bl2.bin       || handle_error flash bl2 error
fastboot $* flash uefi_ab          ${SCRIPT_PATH}/images/sec_uefi.img      || handle_error flash uefi error
fastboot $* flash ddr_param_ab     ${SCRIPT_PATH}/images/sec_ddr_para.img  || handle_error flash ddr_param error
fastboot $* flash boot_logo_ab     ${SCRIPT_PATH}/images/boot_logo.img     || handle_error flash boot_logo error
fastboot $* flash xctrl_cpu_ab     ${SCRIPT_PATH}/images/sec_xctrl_cpu.img || handle_error flash xctrl_cpu error
fastboot $* flash xctrl_ddr_ab     ${SCRIPT_PATH}/images/sec_xctrl_ddr.img || handle_error flash xctrl_ddr error
fastboot $* flash nvmem            ${SCRIPT_PATH}/images/nve.img           || handle_error flash nvmem error
fastboot $* flash lpctrl_ab        ${SCRIPT_PATH}/images/sec_lpctrl.bin    || handle_error flash lpctrl error
fastboot $* flash bl31_ab          ${SCRIPT_PATH}/images/sec_bl31.bin      || handle_error flash bl31 error
fastboot $* flash tee_ab           ${SCRIPT_PATH}/images/sec_tee.bin       || handle_error flash tee error
fastboot $* flash xhee_ab          ${SCRIPT_PATH}/images/sec_xhee.img      || handle_error flash xhee error
fastboot $* flash xspm_ab          ${SCRIPT_PATH}/images/sec_xspm.img      || handle_error flash xspm error
fastboot $* flash xsps_ab          ${SCRIPT_PATH}/images/sec_xsp.img       || handle_error flash xsps error
fastboot $* flash sensorhub_ab     ${SCRIPT_PATH}/images/sec_sensorhub.img || handle_error flash sensorhub error
fastboot $* flash adsp_ab          ${SCRIPT_PATH}/images/sec_adsp.bin      || handle_error flash adsp error
fastboot $* flash isp_ab           ${SCRIPT_PATH}/images/sec_isp.img       || handle_error flash isp error
fastboot $* flash npu_ab           ${SCRIPT_PATH}/images/sec_npu.img       || handle_error flash npu error
fastboot $* flash dtbo_ab          ${SCRIPT_PATH}/images/dtbo.img          || handle_error flash dtbo error
fastboot $* flash sec_dtbo_ab      ${SCRIPT_PATH}/images/sec_dtb.img       || handle_error flash sec_dtbo error
fastboot $* flash vendor_boot_ab   ${SCRIPT_PATH}/images/vendor_boot.img   || handle_error flash vendor_boot error
fastboot $* flash init_boot_ab     ${SCRIPT_PATH}/images/init_boot.img     || handle_error flash init_boot error
fastboot $* flash vbmeta_ab        ${SCRIPT_PATH}/images/vbmeta.img        || handle_error flash vbmeta error
fastboot $* flash vbmeta_system_ab ${SCRIPT_PATH}/images/vbmeta_system.img || handle_error flash vbmeta_system error
fastboot $* flash vbmeta_vendor_ab ${SCRIPT_PATH}/images/vbmeta_vendor.img || handle_error flash vbmeta_vendor error
fastboot $* flash sap_ab           ${SCRIPT_PATH}/images/sap.img           || handle_error flash sap error
fastboot $* flash mcf_ota_ab       ${SCRIPT_PATH}/images/mcf_ota.img       || handle_error flash mcf_ota error
fastboot $* flash recovery_ab      ${SCRIPT_PATH}/images/recovery.img      || handle_error flash recovery error
fastboot $* flash misc             ${SCRIPT_PATH}/images/misc.img          || handle_error flash misc error
fastboot $* flash rescue           ${SCRIPT_PATH}/images/rescue.img        || handle_error flash rescue error
fastboot $* flash hdcp_ab          ${SCRIPT_PATH}/images/sec_hdcp.bin      || handle_error flash hdcp error
fastboot $* flash logfs            ${SCRIPT_PATH}/images/logfs_ufs_8mb.bin || handle_error flash logfs error
fastboot $* flash pvmfw_ab         ${SCRIPT_PATH}/images/pvmfw.img         || handle_error flash pvmfw error
fastboot $* flash modem_ab         ${SCRIPT_PATH}/images/tmodem.img        || handle_error flash modem error
fastboot $* flash super            ${SCRIPT_PATH}/images/super.img         || handle_error flash super error
fastboot $* erase metadata || handle_error erase metadata error
fastboot $* flash metadata         ${SCRIPT_PATH}/images/metadata.img      || handle_error flash metadata error
fastboot $* flash userdata         ${SCRIPT_PATH}/images/userdata.img      || handle_error flash userdata error
fastboot $* flash boot_ab          ${SCRIPT_PATH}/images/boot.img          || handle_error flash boot error

#fastboot $* oem cdms     || handle_error oem cdms error
fastboot $* set_active a || handle_error set_active a error
fastboot $* reboot       || handle_error reboot error
exit 0
