firmware-base/scripts/upload-all.bat

179 lines
3.9 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: ESP32 Firmware & LittleFS Upload Script (Windows)
:: Usage: scripts\upload-all.bat [--env ENV] [--port PORT] [--fs]
:: Default values
set "ENV=waveshare"
set "PORT="
set "UPLOAD_FS=true"
set "FIRMWARE_ONLY=false"
set "HELP=false"
:: Parse command line arguments
:parse_args
if "%~1"=="" goto :done_parsing
if "%~1"=="-e" (
set "ENV=%~2"
shift /1
shift /1
goto :parse_args
)
if "%~1"=="--env" (
set "ENV=%~2"
shift /1
shift /1
goto :parse_args
)
if "%~1"=="-p" (
set "PORT=%~2"
shift /1
shift /1
goto :parse_args
)
if "%~1"=="--port" (
set "PORT=%~2"
shift /1
shift /1
goto :parse_args
)
if "%~1"=="-f" (
set "FIRMWARE_ONLY=true"
set "UPLOAD_FS=false"
shift /1
goto :parse_args
)
if "%~1"=="--firmware-only" (
set "FIRMWARE_ONLY=true"
set "UPLOAD_FS=false"
shift /1
goto :parse_args
)
if "%~1"=="-h" (
set "HELP=true"
shift /1
goto :parse_args
)
if "%~1"=="--help" (
set "HELP=true"
shift /1
goto :parse_args
)
echo Unknown option: %~1
echo Use --help for usage information
exit /b 1
:done_parsing
:: Show help
if "%HELP%"=="true" (
echo ESP32 Complete Upload Script
echo.
echo Usage: %0 [OPTIONS]
echo.
echo Options:
echo -e, --env ENV PlatformIO environment ^(default: waveshare^)
echo -p, --port PORT Serial port ^(default: auto-detect^)
echo -f, --firmware-only Upload firmware only ^(skip LittleFS^)
echo -h, --help Show this help message
echo.
echo Examples:
echo %0 # Upload firmware + LittleFS ^(default^)
echo %0 --firmware-only # Upload firmware only
echo %0 --env waveshare-release # Upload release build + LittleFS
echo %0 --port COM17 # Upload both to specific port
echo %0 --env waveshare-release --port COM17 # All options
echo.
exit /b 0
)
echo === ESP32 Complete Upload Tool ===
echo Environment: %ENV%
if "%PORT%"=="" (
echo Port: auto-detect
) else (
echo Port: %PORT%
)
if "%FIRMWARE_ONLY%"=="true" (
echo Upload: Firmware only
) else (
echo Upload: Firmware + LittleFS ^(complete^)
)
echo.
:: Build file paths
set "BUILD_DIR=.pio\build\%ENV%"
set "FIRMWARE=%BUILD_DIR%\firmware.bin"
set "BOOTLOADER=%BUILD_DIR%\bootloader.bin"
set "PARTITIONS=%BUILD_DIR%\partitions.bin"
:: Check if firmware exists
if not exist "%FIRMWARE%" (
echo ❌ Firmware not found: %FIRMWARE%
echo Run: npm run build ^(or pio run -e %ENV%^)
exit /b 1
)
echo ✅ Found firmware files in %BUILD_DIR%
:: Build command
set "CMD=python scripts\upload_firmware.py --firmware "%FIRMWARE%""
:: Add optional files if they exist
if exist "%BOOTLOADER%" (
set "CMD=!CMD! --bootloader "%BOOTLOADER%""
)
if exist "%PARTITIONS%" (
set "CMD=!CMD! --partitions "%PARTITIONS%""
)
:: Add port if specified
if not "%PORT%"=="" (
set "CMD=!CMD! --port "%PORT%""
)
:: Execute upload
echo Command: !CMD!
echo.
!CMD!
if %errorlevel% equ 0 (
echo.
echo ✅ Firmware upload completed successfully!
:: Upload LittleFS if requested
if "%UPLOAD_FS%"=="true" (
echo.
echo === Uploading LittleFS ===
:: Build LittleFS command
set "FS_CMD=python scripts\upload_littlefs.py --auto --env "%ENV%""
:: Add port if specified
if not "%PORT%"=="" (
set "FS_CMD=!FS_CMD! --port "%PORT%""
)
echo Command: !FS_CMD!
echo.
!FS_CMD!
if !errorlevel! equ 0 (
echo.
echo ✅ LittleFS upload completed successfully!
echo 🎉 All uploads completed!
) else (
echo.
echo ❌ LittleFS upload failed!
exit /b 1
)
)
) else (
echo.
echo ❌ Firmware upload failed!
exit /b 1
)