@echo off
echo Someone believe Xi'an TOP insists on using old xml name, so create this tool for developer and tester for "One-click flashing"
setlocal enabledelayedexpansion
if exist rawprogram1.xml (set type=ufs & set active_part=1) else (set type=emmc & set active_part=0)
copy /y xbl_s_devprg_ns.melf prog_firehose_ddr.elf
set func=%1
if a%1 == a set func=normal
goto :chk_%func%
echo Error: unknown function: %func%
goto :end
:chk_provision
:chk_normal
:chk_factory
:chk_efused
ping 127.1 -n 5 >nul
echo Reboot to EDL …
adb reboot edl
ping 127.1 -n 5 >nul
echo Wait for 9008 ready …
set com=
:retry
ping 127.1 -n 3 >nul
for /f "tokens=1,2,3 delims=()" %%i in ('lsusb ^| findstr /i 9008') do set com=%%j
if a%com% == a goto :retry
echo com=%com%
QSaharaServer -p \\.\%com% -s 13:prog_firehose_ddr.elf
if errorlevel 1 (echo Error: QSaharaServer failed, please long press up+down+power key for 20 seconds to edl mode, or long press power key for 20 seconds to reboot & goto :end)
goto :%func%
:provision
echo Provision …
fh_loader –port=\\.\%com% –sendxml=provision_ufs31.xml –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=UFS –skipstorageinit
if errorlevel 1 (echo Error: provision failed & goto :reset2edl)
fh_loader –port=\\.\%com% –sendxml=ResetToEDL.xml –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=ufs
if errorlevel 1 (echo Error: reset_to_edl failed & goto :reset2edl)
echo Provision is done
goto :end
:normal
echo Flash normal …
call :get_xml_list rawprogram?.xml
fh_loader –port=\\.\%com% –sendxml=%xml_list% –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 goto :flash_failed
goto :common
:factory
echo Flash factory …
call :get_xml_list rawprogram?_factory.xml
fh_loader –port=\\.\%com% –sendxml=%xml_list% –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 goto :flash_failed
goto :common
:efused
echo Flash factory_efused …
call :get_xml_list rawprogram?_factory_efused.xml
fh_loader –port=\\.\%com% –sendxml=%xml_list% –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 goto :flash_failed
goto :common
:common
echo "Flash patch xml …"
call :get_xml_list patch?.xml
fh_loader –port=\\.\%com% –sendxml=%xml_list% –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 goto :flash_failed
echo "Set active partition …"
fh_loader –port=\\.\%com% –setactivepartition=%active_part% –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 (echo Error: set_active_partition failed & goto :reset2edl)
echo "Reset …"
fh_loader –port=\\.\%com% –reset –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
if errorlevel 1 (echo Error: reset failed & goto :reset2edl)
echo Flashing done
:end
pause
goto :EOF
:flash_failed
echo Error: Flashing failed
:reset2edl
fh_loader –port=\\.\%com% –sendxml=ResetToEDL.xml –noprompt –showpercentagecomplete –zlpawarehost=1 –memoryname=%type%
goto :end
:get_xml_list
set xml_list=
for %%i in (%1) do set xml_list=!xml_list!%%i,
echo %1 list: %xml_list%
goto :EOF