95 lines
2.8 KiB
Bash
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" |