#!/bin/bash # Script to setup framework modifications for STM32WL LoRaWAN project # Usage: ./setup_framework.sh set -e echo "Setting up framework modifications for STM32WL LoRaWAN build..." # Find PlatformIO packages directory if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then # Windows PIO_PACKAGES="$HOME/.platformio/packages" else # Linux/macOS PIO_PACKAGES="$HOME/.platformio/packages" fi FRAMEWORK_ZEPHYR="$PIO_PACKAGES/framework-zephyr" LORAMAC_NODE="$FRAMEWORK_ZEPHYR/_pio/modules/lib/loramac-node" echo "PlatformIO packages: $PIO_PACKAGES" echo "Framework Zephyr: $FRAMEWORK_ZEPHYR" # Check if framework exists if [ ! -d "$FRAMEWORK_ZEPHYR" ]; then echo "Error: Zephyr framework not found at $FRAMEWORK_ZEPHYR" echo "Please run 'pio run' first to download the framework" exit 1 fi if [ ! -d "$LORAMAC_NODE" ]; then echo "Error: LoRaMAC-Node not found at $LORAMAC_NODE" exit 1 fi echo "✓ Framework directories found" # 1. Remove conflicting sx126x.c from LoRaMAC-Node CONFLICTING_FILE="$LORAMAC_NODE/src/radio/sx126x/sx126x.c" if [ -f "$CONFLICTING_FILE" ]; then echo "Removing conflicting sx126x.c..." rm "$CONFLICTING_FILE" echo "✓ Removed $CONFLICTING_FILE" else echo "✓ sx126x.c already removed" fi # 2. Create radio_sx126x.c from original sx126x.c RADIO_SX126X="$LORAMAC_NODE/src/radio/sx126x/radio_sx126x.c" if [ ! -f "$RADIO_SX126X" ]; then echo "Creating radio_sx126x.c from git repository..." cd "$LORAMAC_NODE" git show HEAD:src/radio/sx126x/sx126x.c > src/radio/sx126x/radio_sx126x.c echo "✓ Created radio_sx126x.c" else echo "✓ radio_sx126x.c already exists" fi # 3. Update CMakeLists.txt CMAKE_FILE="$FRAMEWORK_ZEPHYR/modules/loramac-node/CMakeLists.txt" echo "Updating CMakeLists.txt..." # Create backup cp "$CMAKE_FILE" "$CMAKE_FILE.backup" # Replace the CONFIG_HAS_SEMTECH_SX126X section sed -i '/zephyr_library_sources_ifdef(CONFIG_HAS_SEMTECH_SX126X/,/^)/{ /zephyr_library_sources_ifdef(CONFIG_HAS_SEMTECH_SX126X/!{ /^)/!d } }' "$CMAKE_FILE" # Insert the new configuration sed -i '/zephyr_library_sources_ifdef(CONFIG_HAS_SEMTECH_SX126X/a\ ${ZEPHYR_LORAMAC_NODE_MODULE_DIR}/src/radio/sx126x/radio.c\ ${ZEPHYR_LORAMAC_NODE_MODULE_DIR}/src/radio/sx126x/radio_sx126x.c' "$CMAKE_FILE" echo "✓ Updated $CMAKE_FILE" echo "" echo "🎉 Framework setup complete!" 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 " rm $RADIO_SX126X" echo " mv $CMAKE_FILE.backup $CMAKE_FILE"