embedded_raumsenor_lorawan/setup_framework.bat
xlemmingx 4850d5b257 Fix Windows package.json error in setup scripts
- Add automatic PlatformIO package cleanup and reinstall
- Handle corrupted framework downloads on Windows
- Improve error handling and user guidance
2025-10-07 17:55:25 +02:00

131 lines
4.0 KiB
Batchfile

@echo off
REM Script to setup framework modifications for STM32WL LoRaWAN project
REM Usage: setup_framework.bat
echo Setting up framework modifications for STM32WL LoRaWAN build...
REM Find PlatformIO packages directory
set PIO_PACKAGES=%USERPROFILE%\.platformio\packages
set FRAMEWORK_ZEPHYR=%PIO_PACKAGES%\framework-zephyr
set LORAMAC_NODE=%FRAMEWORK_ZEPHYR%\_pio\modules\lib\loramac-node
echo PlatformIO packages: %PIO_PACKAGES%
echo Framework Zephyr: %FRAMEWORK_ZEPHYR%
REM Check if framework exists
if not exist "%FRAMEWORK_ZEPHYR%" (
echo Error: Zephyr framework not found at %FRAMEWORK_ZEPHYR%
echo Please run 'pio run' first to download the framework
pause
exit /b 1
)
if not exist "%LORAMAC_NODE%" (
echo LoRaMAC-Node not found, need to fix PlatformIO packages first...
echo Cleaning and reinstalling PlatformIO packages...
echo Removing corrupted packages...
rmdir /s /q "%PIO_PACKAGES%" 2>nul
echo Updating PlatformIO core...
pio update
echo Running initial build to download fresh packages...
pio run
if %errorlevel% neq 0 (
echo [31mError: Build failed after package cleanup[0m
echo [33mTry running: pio platform install ststm32[0m
pause
exit /b 1
)
echo [32m✓ Framework modules initialized[0m
)
REM Double-check after potential build
if not exist "%LORAMAC_NODE%" (
echo Error: LoRaMAC-Node still not found at %LORAMAC_NODE%
echo Please check PlatformIO installation and project configuration
pause
exit /b 1
)
echo [32m✓ Framework directories found[0m
REM 1. Remove conflicting sx126x.c from LoRaMAC-Node
set CONFLICTING_FILE=%LORAMAC_NODE%\src\radio\sx126x\sx126x.c
if exist "%CONFLICTING_FILE%" (
echo Removing conflicting sx126x.c...
del "%CONFLICTING_FILE%"
echo [32m✓ Removed %CONFLICTING_FILE%[0m
) else (
echo [32m✓ sx126x.c already removed[0m
)
REM 2. Create radio_sx126x.c from original sx126x.c
set RADIO_SX126X=%LORAMAC_NODE%\src\radio\sx126x\radio_sx126x.c
if not exist "%RADIO_SX126X%" (
echo Creating radio_sx126x.c from git repository...
cd /d "%LORAMAC_NODE%"
git show HEAD:src/radio/sx126x/sx126x.c > src\radio\sx126x\radio_sx126x.c
if %errorlevel% neq 0 (
echo [31mError: Failed to create radio_sx126x.c from git[0m
echo Please ensure git is available and LoRaMAC-Node is a git repository
pause
exit /b 1
)
echo [32m✓ Created radio_sx126x.c[0m
) else (
echo [32m✓ radio_sx126x.c already exists[0m
)
REM 3. Update CMakeLists.txt
set CMAKE_FILE=%FRAMEWORK_ZEPHYR%\modules\loramac-node\CMakeLists.txt
echo Updating CMakeLists.txt...
REM Create backup
copy "%CMAKE_FILE%" "%CMAKE_FILE%.backup" >nul
REM For Windows, we'll use PowerShell for text replacement
powershell -Command ^
"$content = Get-Content '%CMAKE_FILE%'; ^
$newContent = @(); ^
$inSection = $false; ^
foreach ($line in $content) { ^
if ($line -match 'zephyr_library_sources_ifdef\(CONFIG_HAS_SEMTECH_SX126X') { ^
$newContent += $line; ^
$newContent += ' ${ZEPHYR_LORAMAC_NODE_MODULE_DIR}/src/radio/sx126x/radio.c'; ^
$newContent += ' ${ZEPHYR_LORAMAC_NODE_MODULE_DIR}/src/radio/sx126x/radio_sx126x.c'; ^
$inSection = $true; ^
} elseif ($inSection -and $line -match '^\)') { ^
$newContent += $line; ^
$inSection = $false; ^
} elseif (-not $inSection) { ^
$newContent += $line; ^
} ^
}; ^
$newContent | Set-Content '%CMAKE_FILE%'"
if %errorlevel% neq 0 (
echo [31mError: Failed to update CMakeLists.txt[0m
pause
exit /b 1
)
echo [32m✓ Updated %CMAKE_FILE%[0m
echo.
echo [32m🎉 Framework setup complete![0m
echo.
echo Summary of changes:
echo - Removed: %CONFLICTING_FILE%
echo - Created: %RADIO_SX126X%
echo - Updated: %CMAKE_FILE%
echo.
echo You can now run 'pio run' to build the project.
echo.
echo To restore original framework:
echo git restore "%CONFLICTING_FILE%"
echo del "%RADIO_SX126X%"
echo move "%CMAKE_FILE%.backup" "%CMAKE_FILE%"
pause