@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
title SkyLogic V2 - Firmware Guncelleme

rem SADECE uygulama (app) imaji - 0x10000'e yazilir.
rem Bootloader / partition / NVS (imza) / EEPROM alanlarina ASLA dokunulmaz.
set "FW=SkyLogic_v2.02_app.bin"
set "APP_OFFSET=0x10000"
set "ESPTOOL=esptool.exe"

cd /d "%~dp0"

cls
echo ============================================================
echo             SkyLogic V2  -  YAZILIM GUNCELLEME
echo ============================================================
echo.
echo   Bu arac SkyLogic kartinizin yazilimini guncelleyecektir.
echo   Yuklenecek surum : v2.02
echo.
echo ------------------------------------------------------------
echo   BASLAMADAN ONCE LUTFEN:
echo.
echo    1) SkyLogic kartini USB kablosu ile bilgisayara takin.
echo    2) BASKA seri/USB cihazlarini (baska kart, USB-TTL,
echo       Arduino, modem vb.) bilgisayardan CIKARIN. Boylece
echo       dogru kart otomatik bulunabilir.
echo    3) Kartin uzerindeki kablonun saglam takili oldugundan
echo       emin olun.
echo.
echo ------------------------------------------------------------
echo.
echo   Hazir oldugunuzda devam etmek icin bir tusa basin...
pause >nul

echo.
echo [1/4] SkyLogic karti araniyor...

set "PORT="
for /f "usebackq delims=" %%P in (`powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0_port_bul.ps1"`) do set "PORT=%%P"

if "%PORT%"=="YOK" (
  echo.
  echo   [HATA] SkyLogic karti bulunamadi!
  echo.
  echo   - Kartin USB kablosu takili mi?
  echo   - Kablonun veri destekli oldugundan emin olun ^(sadece
  echo     sarj kablosu OLMAZ^).
  echo   - Kabloyu cikarip tekrar takin ve bu araci yeniden acin.
  echo.
  goto :FAIL
)

echo %PORT% | findstr /b "COKLU:" >nul
if not errorlevel 1 (
  set "COKLU=%PORT:COKLU:=%"
  echo.
  echo   [DIKKAT] Birden fazla SkyLogic karti bulundu: !COKLU!
  echo.
  echo   Yanlis karta yazmamak icin lutfen SADECE guncellemek
  echo   istediginiz karti takili birakip digerlerini cikarin,
  echo   sonra bu araci yeniden calistirin.
  echo.
  goto :FAIL
)

echo        Kart bulundu: %PORT%
echo.
echo ============================================================
echo   [2/4] GUNCELLEME BASLIYOR
echo.
echo    * KARTIN GUCUNU KESMEYIN
echo    * USB KABLOSUNU CIKARMAYIN
echo    * BU PENCEREYI KAPATMAYIN
echo.
echo    Islem yaklasik 20-40 saniye surer. Lutfen bekleyin...
echo ============================================================
echo.

rem YALNIZCA uygulama alanina yaz (0x10000). Bootloader/partition/NVS(imza)/EEPROM
rem alanlarina HIC dokunulmaz. Bootloader'a dokunulmadigi icin flash-mode uyumu da
rem korunur (--flash_mode keep). Imza NVS'te (0x9000-0xE000) ve harici EEPROM'da; bu
rem yazma 0x10000'den basladigi icin o alanlara FIZIKSEL olarak erisemez.
"%ESPTOOL%" --chip esp32s3 --port %PORT% --baud 921600 --before default_reset --after hard_reset write_flash --flash_mode keep --flash_freq keep --flash_size keep %APP_OFFSET% "%FW%"

if errorlevel 1 (
  echo.
  echo   [HATA] Guncelleme tamamlanamadi!
  echo.
  echo   - USB kablosunu cikarip tekrar takin.
  echo   - Kartin gucunun kesilmedigine emin olun.
  echo   - Bu araci yeniden calistirin.
  echo   - Sorun devam ederse yetkili ile iletisime gecin.
  echo.
  goto :FAIL
)

echo.
echo [3/4] Kart yeniden baslatiliyor...
echo [4/4] Dogrulaniyor...
echo.
echo ============================================================
echo.
echo        GUNCELLEME BASARIYLA TAMAMLANDI!  (v2.02)
echo.
echo    Kartiniz yeniden baslatildi. Birkac saniye icinde
echo    normal calismaya donecektir.
echo.
echo    Artik USB kablosunu guvenle cikarabilirsiniz.
echo.
echo ============================================================
echo.
echo   Kapatmak icin bir tusa basin...
pause >nul
exit /b 0

:FAIL
echo ------------------------------------------------------------
echo   Kapatmak icin bir tusa basin...
pause >nul
exit /b 1
