embedded_raumsenor_lorawan/setup_framework.sh

95 lines
2.8 KiB
Bash

#!/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"