@echo off
chcp 1251 > nul
title PON Miner Flasher
color 0A

cls
echo ================================================
echo          PON MINER - ПРОШИВКА УСТРОЙСТВА
echo ================================================
echo.
echo [1] Подключите ESP32-S3 к USB
echo [2] Запустите этот файл
echo.

:: Проверка наличия Python
python --version >nul 2>nul
if %errorlevel% neq 0 (
    echo [ОШИБКА] Python не установлен!
    echo.
    echo Скачайте Python с сайта: https://www.python.org/downloads/
    pause
    exit /b
)

:: Проверка наличия esptool
pip show esptool >nul 2>nul
if %errorlevel% neq 0 (
    echo Устанавливаю esptool...
    pip install esptool
)

:: Проверка наличия всех файлов
if not exist "bootloader.bin" (
    echo [ОШИБКА] bootloader.bin не найден!
    pause
    exit /b
)
if not exist "partitions.bin" (
    echo [ОШИБКА] partitions.bin не найден!
    pause
    exit /b
)
if not exist "firmware.bin" (
    echo [ОШИБКА] firmware.bin не найден!
    pause
    exit /b
)
if not exist "config.bin" (
    echo [ОШИБКА] config.bin не найден!
    pause
    exit /b
)

echo.
echo ================================================
echo Найденные файлы:
echo ------------------------
echo   [?] bootloader.bin
echo   [?] partitions.bin
echo   [?] firmware.bin
echo   [?] config.bin
echo ------------------------
echo.

:: Ввод COM порта
set /p PORT="Введите COM порт (например COM7): "
if "%PORT%"=="" set PORT=COM7

echo.
echo ================================================
echo   ПЕРЕВЕДИТЕ ESP32-S3 В РЕЖИМ ЗАГРУЗЧИКА
echo ================================================
echo 1. Зажмите кнопку BOOT на плате
echo 2. Нажмите и отпустите кнопку RESET
echo 3. Отпустите кнопку BOOT
pause

echo.
echo ================================================
echo   ПРОШИВКА...
echo ================================================
echo.

:: Очистка flash
echo [1/5] Очистка flash...
esptool --chip esp32s3 --port %PORT% erase_flash
if %errorlevel% neq 0 goto error

:: Прошивка bootloader (адрес 0x0)
echo [2/5] Запись bootloader (0x0)...
esptool --chip esp32s3 --port %PORT% --baud 921600 write_flash 0x0 bootloader.bin
if %errorlevel% neq 0 goto error

:: Прошивка partition table (адрес 0x8000)
echo [3/5] Запись partition table (0x8000)...
esptool --chip esp32s3 --port %PORT% --baud 921600 write_flash 0x8000 partitions.bin
if %errorlevel% neq 0 goto error

:: Прошивка firmware (адрес 0x10000)
echo [4/5] Запись firmware (0x10000)...
esptool --chip esp32s3 --port %PORT% --baud 921600 write_flash 0x10000 firmware.bin
if %errorlevel% neq 0 goto error

:: Прошивка config (адрес 0x6D0000)
echo [5/5] Запись config (0x6D0000)...
esptool --chip esp32s3 --port %PORT% --baud 921600 write_flash 0x6D0000 config.bin
if %errorlevel% neq 0 goto error

echo.
echo ================================================
echo   ? ПРОШИВКА УСПЕШНО ЗАВЕРШЕНА!
echo ================================================
echo.
echo Устройство перезагружается и начинает майнинг
echo.
pause
exit /b

:error
echo.
echo ================================================
echo   ? ОШИБКА ПРОШИВКИ!
echo ================================================
pause
